Я новичок в Mongoose, а также использую async / await. Сейчас у меня есть схема Mongoose со статическим методом, например:
const userSchema = new Schema({
username: String,
pass: String
});
userSchema.statics.checkExist = async function(username){
return await this.findOne({username: username}, function(err, res){
if(err){
return err;
}
if(res){
return true;
}
else{
return false;
}
})
}
Статический метод checkExist()
должен принимать имя пользователя и проверять, существует ли документ с таким же именем пользователя. Если это так, он должен вернуть true, иначе false. Я использую его на своем сервере NodeJS / Express следующим образом:
router.post('/auth/login', async (req, res) =>{
let username = req.body.username;
let existBool = await UserModel.checkExist(username);
console.log(existBool);
res.send({'hash': existBool});
});
Я ожидаю, что existBool
будет истинным / ложным логическим значением. Вместо этого checkExist()
, кажется, вообще не вызывает функцию обратного вызова. Вместо этого он возвращает результат findOne()
, который является объектом с соответствующим полем имени пользователя. Что я тут не так делаю?