0

我有功能:

let isExistByEmail = (email) => {
    return new Promise(function (resolve) {
        db.count({email: email}, (err, n) => {
            resolve(n > 0);
        });
    }).then(result => {
        return result;
    });
};

如果我在其中制作 console.log -> 将是结果。但是,因为它的操作异步结果不会返回到父模块。我需要验证,如果电子邮件存在返回错误,但我不能。我尝试 make setTimeout 并尝试使用异步等待,但没有结果。

4

2 回答 2

2

我找到了下一个答案:使用 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
    }
 }
于 2018-05-12T14:37:22.063 回答
1

我不确定你想暗示什么。但据我了解,你不会得到结果。isExistByEmail('email@email.com')将返回一个 Promise 而不是您期望的布尔值。然后返回一个承诺而不是 obj/变量

于 2018-05-12T01:26:55.853 回答