这是一个检查mongoose上重复记录的函数。在这种情况下,name
和email
是唯一字段,因此,如果数据库中有同名或电子邮件的记录,则无法插入新记录:
const checkIfDatabaseHasUsersWithSameNameAndEmail = async () => {
uniques = ['name', 'email'];
uniques.map((field) => {
let query = {};
query[field] = data[field];
query.deleted = false;
let result = await model.findOne(query); <== ERROR: await is a reserved word
if (result) {
errors.push({
field: field,
message: 'A record already exists in database for ' + field + '=' + data[field]
});
}
});
if (errors.length > 0)
return errors;
}
schema.statics.create = function (data) {
let errors = await checkIfDatabaseHasUsersWithSameNameAndEmail(); <== ERROR: await is a reserved word
if (errors)
throw new Error(errorMessages);
let company = new this(data);
return company.save();
}
在运行时,我在代码中发现以下错误:wait是一个保留字
这是我第一次使用async/await,所以我可能用错了方法。我的目标是按顺序运行que unique测试(findOne),如果一切正常,则保存新的寄存器。
错误是因为您试图等待某件事,但没有声明函数异步。我没有用猫鼬测试这个,但是它看起来像这样。
async function checkIfDatabaseHasUsersWithSameNameAndEmail(data) {
const uniques = ['name', 'email'];
return Promise.all(uniques.map(async (field) => {
const query = {};
query[field] = data[field];
query.deleted = false;
return model.findOne(query);
}));
}
schema.statics.create = async function create(data) {
try {
const results = await checkIfDatabaseHasUsersWithSameNameAndEmail(data);
results.forEach((result) => {
console.log(`Here's the issue: ${JSON.stringify(result)}`);
throw new Error('Do something about it.');
});
const company = new this(data);
return company.save();
} catch (error) {
throw error;
}
};
问题内容: 我有一对多关系的两个表。假设对于表格中的每一行,表格中可以有0或更多行引用。 客户想要知道引用某行中有多少行,对于中的所有行。 我可以使用以下查询完成此操作: 但是,如果表和很大,该怎么办?假设有100万行,并且有1000万行。我们还要说,其中99%的行的引用计数少于1000行。假设客户通常一次请求大约100行。 我应该将朴素的count()查询与外键上的索引一起使用,还是最好保留一个
为了便于编程,CodeIgniter使用了一系列的函数和名称来完成操作。所以,有些名称不能被程序员使用。下面是不能被程序员使用的保留字列表。 控制器 因为你的控制器类将继承主程序控制器,所以你的函数命名一定不能和主程序控制器类中的函数名相同,否则你的局部函数将会覆盖他们。下面列出了已经保留的名称,请不要将你的控制器命名为这些: Controller CI_Base _ci_initialize D
Javascript 保留字 abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static sup
SQL 保留字 ABCDEFGHIJKLMNOPQRSTUVWXYZ 下表包括了所有 Microsoft Jet 数据库引擎保留的用于 SQL 语句的字。列表中的字,若不是全部大写,也被其它应用程序所保留。因此,对于这些字的各个帮助主题只提供了通常的描述,并未着重 SQL的用法。 注意 跟着一星号 * 的词是被保留的,但是当前在 Microsoft® Jet SQL 语句的范畴内并没有意义(例如,
在JavaScript中有没有办法删除字符串的结尾? 我只需要保留字符串的前8个字符,并删除其余字符。
问题内容: 我刚刚s在以下lambda表达式中替换为_: Eclipse编译器说: ‘_’不应用作标识符,因为它是源级别1.8以后的保留关键字。 我没有在JLS§3.9词法结构/关键字中找到任何解释。 问题答案: 看的地方是JLS§15.27.1。Lambda参数 如果lambda参数具有名称_(即单个下划线字符),则是编译时错误。 不建议在任何上下文中使用变量名_。Java编程语言的未来版本可能