【发布时间】:2018-04-13 03:52:57
【问题描述】:
这是一个检查 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();
}
运行时,我在代码中发现以下错误:await is a reserved word
这是我第一次使用 async/await,所以可能我用错了方法。我的目标是按顺序运行唯一的测试(findOne),如果一切顺利,保存新的寄存器。
【问题讨论】:
-
你在传递给
.map()的非异步回调中使用await。 -
您实际使用的匿名函数
await未声明async。 -
是的。范围问题。
-
感谢所有 cmets,但是...我应该在代码中修复什么?
-
@Mendes 你能告诉我们这应该做什么吗?你期待
findAny给你回东西吗?如果是,它应该返回什么?
标签: javascript node.js mongoose async-await