我的自定义验证器始终返回true,尽管结果未定义且在这种情况下我返回false
const validatorOptions = {
customValidators: {
not_exist: (inputParam) => {
let qry = 'select * from Users where email = ?';
let exist= db.query(qry, inputParam, (err, result) => {
if (err)
throw err;
if (result) {
console.log("Exist");
return false;
} else
return true;
});
return exist;
}
}
};
我尝试使用 Promise ,但仍然无法正常工作。
const validatorOptions = {
customValidators: {
isUniqueEmail: (email) => {
function getRecord(email) {
return new Promise(function(resolve, reject) {
let qry = 'select * from Users where email = ?';
db.query(qry, email, (err, result) => {
if (err)
reject(err);
else {
resolve(result);
}
});
});
};
getRecord(email).then(function(res) {
return (res.length == 0);
}).catch((err) => { throw err; });;
}
}
};
req.checkBody('email', 'Email already exist').isUniqueEmail();
答案 0 :(得分:0)
那是因为您要返回变量 exist ,该变量等于db.query()
(并且始终为truthy
值)。
我对此代码有一些疑问(因为我看不到它如何在当前状态下运行):
customValidators
作为validatorOptions
的孩子似乎很奇怪,这是有原因的吗?isUniqueEmailAddress
?