проверка возвращает значение false, но элемент все равно проходит. Мангуст

#mongoose

Вопрос:

Добрый день, Итак, вот что я пытаюсь сделать: я пытаюсь проверить имя пользователя и подтвердить, что в базе данных нет других имен пользователей, и я думаю, что нашел решение. Я считаю, что возвращаю false в валидатор, но ответ все равно отправляется в базу данных. Если мне нужно предоставить больше, дайте мне знать

 const userSchema = new Mongoose.Schema (  {  playerName : {  type: String,   required: (true, "No Name Specified"),  validate: {  validator(val) {  value = true  User.findOne( { "playerName" : val}, function(err, result) {  if (result != null) {  value = false     }    })  return value    },        message: "playerName already Exsits"  }  },  

Заранее спасибо

Ответ №1:

Проблема в том, что ваш валидатор не ожидает ответа и достигает return value (что верно) до обратного value = false вызова .

Итак, вам нужен такой async валидатор, как этот:

 const userSchema = new Mongoose.Schema({  playerName: {  type: String,  required: (true, "No Name Specified"),  validate: {  async validator(val) {  const result = await User.findOne({  "playerName": val  })  return result == null ? true : false  },  message: "playerName already Exsits"  }  },