Я пытаюсь использовать JavaScript и MongoDB, чтобы проверить, присутствует ли имя пользователя в наборе данных. Я ищу, чтобы он возвращал простое истинное или ложное утверждение. Я использую следующий синтаксис:JavaScript и MongoDB return undefined using Find()
checkUserName = function (usernameIn) {
User.findOne({username: usernameIn}, function(err, item) {
if (err) throw err;
if(item === null) {
console.log("Does not exist")
return false;
}
else {
console.log("Username already exists.")
return true;
}
});
Однако, когда я вызываю функцию она только возвращает неопределенное значение вместо истинных или ложных показаний.
EDIT:
я называю уаг User = mongoose.model ('Пользователи') в верхней части сценария. Функция корректно выполняет операции conole.log(), однако она просто не возвращает результат, когда я выполняю var result = checkUserName (имя пользователя).
Большое спасибо
кажется, что «Пользователь» объект не доступен внутри функции. –
Многие извиняются, я вызываю var User = mongoose.model ('Users'); в верхней части функции. События console.log() корректно запускаются, но возврат функции просто определяется как неопределенный. – Dan
Это связано с тем, что операции с базой данных асинхронны. Вам придется использовать обещания или обратные вызовы, чтобы убедиться, что чтение базы данных завершено в тот момент, когда вы пытаетесь использовать возврат функции. –