ОПИСАНИЕ СЛУЧАЯ: Я создаю приложение чата с полным стеком для 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), однако результат «неопределен». Заранее спасибо за любую помощь!