Узел JS, NeDB - Как вернуть синхронизацию в родительский модуль - PullRequest
0 голосов
/ 12 мая 2018

У меня есть func:

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

И если я сделаю в нем console.log -> будет результат.Но, поскольку это асинхронный результат операции, он не возвращается в родительский модуль.Мне нужно проверить, если электронная почта существует, вернуть ошибку, но я не могу.Я пытаюсь сделать setTimeout и использовать асинхронное ожидание, но безрезультатно.

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Я нашел следующий ответ: используйте 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
    }
 }
0 голосов
/ 12 мая 2018

Я не уверен, что вы пытаетесь подразумевать. Но из того, что я понимаю, вы не получите результат обратно. isExistByEmail('email@email.com') вернет Обещание, а не логическое значение, которое вы ожидаете. затем возвращает обещание, а не obj / variable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...