我正在开发nodejs API。在我的某些API中,我需要检查数据库中某些参数是否唯一,并且需要使用单独的方法对其进行编码以共享功能。 (PS:我不想在续集模型中这样做)
我的api调用
var duplicate = checkUniqueEmail(req.body.email);
console.log(duplicate);
if(duplicate == true){
//do something
} else {
//return error
};
这样的检查方法
function checkUniqueEmail(email){
db.users.find( {
where: {email: email}
}).then( (result) => {
if(result !== null){
return false;
} else {
return true;
}
}).catch(err => {
console.log(err);
});
}
但是最后我通过console.log(重复)得到了undefined
问题似乎是我在执行之前记录了结果并返回了一些结果,这应该是javascript异步问题。
如何修改代码以实现目标?
答案 0 :(得分:-1)
您的代码存在的问题是checkUniqueEmail
函数没有返回任何值。您要么使用async
和await
重写它,要么在调用DB之前添加return
关键字:
async foo() {
var duplicate = await checkUniqueEmail(req.body.email);
console.log(duplicate);
if (duplicate == true){
//do something
} else {
//return error
}
}
async checkUniqueEmail(email){
try {
var result = await db.users.find({where: {email: email}});
if (result !== null){
return false;
} else {
return true;
}
} catch (err) {
console.log(err);
}
}