Метод mongoDB возвращает неопределенное значение, несмотря на то, что все правильно - PullRequest
0 голосов
/ 13 марта 2020

ОПИСАНИЕ СЛУЧАЯ: Я создаю приложение чата с полным стеком для node.js (с Express), socket.io и mongoDB. Все работает нормально до момента, когда пользователь помещает данные регистрации, которые уже используются в другой учетной записи. Я создал две функции: во-первых, чтобы проверить, существует ли уже имя пользователя, например запрос, и во-вторых, для адресов электронной почты. (Все функции, соединяющиеся с db, используют обратные вызовы для обеспечения правильной асинхронной работы, также я попытался создать локальную переменную и присвоить ей значение (t / f) и вернуть его, все еще будучи «неопределенным»).

usernameExists = function(username){
    var query = {
        username: username
    }
    mongodb.connect(dburl, {useNewUrlParser: true, useUnifiedTopology: true}, function(err, db){
        var chat = db.db('chat');
        chat.collection('users').countDocuments(query, function(err, number){
            if (number > 0){
                return true;
            } else {
                return false;
            }
        });
    });
}

Email один:

emailExists = function(email){
    var query = {
        email: email
    }
    mongodb.connect(dburl, {useNewUrlParser: true, useUnifiedTopology: true}, function(err, db){
        var chat = db.db('chat');
        chat.collection('users').countDocuments(query, function(err, number){
            if (number > 0){
                return true;
            } else {
                return false;
            }
        });
    });
}

ОПИСАНИЕ ПРОБЛЕМЫ: Когда пользователь помещает данные в форму на веб-интерфейсе, даже тот же самый документ создается в базе данных. Я попытался записать число и результат этих методов: число, кажется, хорошо (> 0), однако результат «неопределен». Заранее спасибо за любую помощь!

...