我已经定义了这个Mongoose架构:
// validator function
var arrayWithAtLeastFiveElements = function (a) {
return (a !== undefined && a.length >= 5);
};
var orderSchema = new Schema({
user: {
type: Schema.ObjectId,
ref: User,
required: true
},
products: [{
type: Schema.ObjectId,
ref: Product,
required: true,
validate: [arrayWithAtLeastFiveElements, 'Order needs to have at least five products']
}]
}, {
timestamps: {
createdAt: 'created_at',
updatedAt: 'updated_at'
}
});
当我尝试保存时,如果products
为undefined
,null
或空数组,则不会执行验证,并且会使用空数组产品保存新订单在每种情况下。仅当products
是包含至少一个元素的数组时,才会运行验证。有什么线索是怎么回事?有没有办法在所有情况下运行验证?另外,在这种情况下需要做什么?如果我根据需要定义产品数组,我认为验证没有任何变化......
答案 0 :(得分:1)
用以下内容定义:
products: {
type: [Schema.ObjectId],
required: true,
}