Node JS、NeDB - 如何同步 return 到父模块
Node JS, NeDB - How make sync return to parent module
我有功能:
let isExistByEmail = (email) => {
return new Promise(function (resolve) {
db.count({email: email}, (err, n) => {
resolve(n > 0);
});
}).then(result => {
return result;
});
};
如果我在其中制作 console.log -> 将是结果。
但是,因为它的操作异步结果不会 return 到父模块。
我需要验证,如果电子邮件存在 return 错误,但我不能。
我尝试 make setTimeout 并尝试使用 async await,但没有结果。
我不确定你想暗示什么。但据我了解,你不会得到结果。 isExistByEmail('email@email.com')
将 return 一个 Promise 而不是您期望的布尔值。 then return 是承诺而不是 obj/variable
我找到了下一个答案:使用 async-await。
async function isEmailExist(email) {
let count = await new Promise((resolve, reject) => {
db.count({email: email}, (err, count) => {
if (err) reject(err);
resolve(count);
});
});
return count > 0;
}
并在通话中再次使用等待:
async function isAccessData(req) {
let errors = [];
if (await users.isEmailExist(req.body.email) === true) {
// doing
}
}
我有功能:
let isExistByEmail = (email) => {
return new Promise(function (resolve) {
db.count({email: email}, (err, n) => {
resolve(n > 0);
});
}).then(result => {
return result;
});
};
如果我在其中制作 console.log -> 将是结果。 但是,因为它的操作异步结果不会 return 到父模块。 我需要验证,如果电子邮件存在 return 错误,但我不能。 我尝试 make setTimeout 并尝试使用 async await,但没有结果。
我不确定你想暗示什么。但据我了解,你不会得到结果。 isExistByEmail('email@email.com')
将 return 一个 Promise 而不是您期望的布尔值。 then return 是承诺而不是 obj/variable
我找到了下一个答案:使用 async-await。
async function isEmailExist(email) {
let count = await new Promise((resolve, reject) => {
db.count({email: email}, (err, count) => {
if (err) reject(err);
resolve(count);
});
});
return count > 0;
}
并在通话中再次使用等待:
async function isAccessData(req) {
let errors = [];
if (await users.isEmailExist(req.body.email) === true) {
// doing
}
}