У меня возникают проблемы с попыткой работать с параметром "runValidators". Моя пользовательская схема имеет поле электронной почты, для которого требуется значение true, но каждый раз, когда новый пользователь добавляется в базу данных (с использованием опции "upsert" ), а поле электронной почты пуст, оно не жалуется:
var userSchema = new mongoose.Schema({
facebookId: {type: Number, required: true},
activated: {type: Boolean, required: true, default: false},
email: {type: String, required: true}
});
findOneAndUpdate
код:
model.user.user.findOneAndUpdate(
{facebookId: request.params.facebookId},
{
$setOnInsert: {
facebookId: request.params.facebookId,
email: request.payload.email,
}
},
{upsert: true,
new: true,
runValidators: true,
setDefaultsOnInsert: true
}, function (err, user) {
if (err) {
console.log(err);
return reply(boom.badRequest(authError));
}
return reply(user);
});
Я понятия не имею, что я делаю неправильно, я просто следовал за документами: http://mongoosejs.com/docs/validation.html
В документах говорится следующее:
Обратите внимание, что в mongoose 4.x обновления проверяют только на операции $set и $unset. Например, нижеприведенное обновление будет выполнено, независимо от значения числа.
Я заменил $setOnInsert на $set, но имел тот же результат.