Я пытаюсь протестировать схемы Mongoose, вставив объект, который не входит в какое-либо обязательное поле.
Это так:
let schema = {
_supplier: {
type: Schema.Types.ObjectId,
required: true
},
permissions: {
type: [
{
level: {
type: Number,
min: 1,
max: 9,
required: true
},
title: {
type: String,
minlength: 0,
maxlength: 16
},
modules: [String]
}
],
validate: [permissionsLimit, '${PATH} exceeds the limit of 9'],
required: true
}
};
function permissionsLimit(v) {
return v.length<=9;
}
let permissionsTestSchema = new Schema(schema);
let PermissionsTest = mongoose.model("permissionsTestSchema", permissionsTestSchema);
let permissionTest = new PermissionsTest({
_supplier: mongoose.Types.ObjectId()
});
permissionTest.save(err => {
if (err) return cast.error(err);
return cast.ok();
});
Как видите, я делаюэкземпляр, который содержит только ключ _supplier
- я не добавляю массив permissions
- Что требуется .
Вместо получения ошибки Mongoose применяет действие ивставляет пустой массив permissions
в коллекцию в MongoDB.
Здесь мне не нужно такое поведение.Я не отправляю документ в коллекции, в котором отсутствуют детали.
Если пользователь не предоставляет массив permissions
для своего значения, я вообще не принимаю запрос.
Почему Mongoose игнорирует обязательные поля в схеме?