#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" } },