Mongoose:保存

时间:2016-07-14 09:48:28

标签: arrays node.js mongodb validation mongoose

我已经定义了这个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'
    }
});

当我尝试保存时,如果productsundefinednull或空数组,则不会执行验证,并且会使用空数组产品保存新订单在每种情况下。仅当products是包含至少一个元素的数组时,才会运行验证。有什么线索是怎么回事?有没有办法在所有情况下运行验证?另外,在这种情况下需要做什么?如果我根据需要定义产品数组,我认为验证没有任何变化......

1 个答案:

答案 0 :(得分:1)

用以下内容定义:

products: {
   type: [Schema.ObjectId],
   required: true,
}