0
我建立它在阵列中的复杂对象的模式:如何验证猫鼬架构具有复杂对象的数组
foo:{
bar:[{
ItemA:String,
ItemB:String
}]
}
我想验证添加到对象数组中,以便检查数组大小(我想限制数组的大小为10)。
我将如何构造模式以验证数组中的那种对象?
我建立它在阵列中的复杂对象的模式:如何验证猫鼬架构具有复杂对象的数组
foo:{
bar:[{
ItemA:String,
ItemB:String
}]
}
我想验证添加到对象数组中,以便检查数组大小(我想限制数组的大小为10)。
我将如何构造模式以验证数组中的那种对象?
您可以通过架构validate
选项做如下
var FooSchema = new Schema({
foo:{
bar: {
type: [{
ItemA:String,
ItemB:String
}],
validate: [arrlimit, '{PATH} exceeds the limit 10']
}
}
});
function arrlimit(arr) {
return arr && arr.length <= 10;
};
如果您添加多个10
物品进入bar
阵列状
var f = Foo({});
for (var i = 0; i < 12; ++i)
f.foo.bar.push({ItemA: 'A', ItemB: 'B'});
f.save(function(err) {
if (err)
console.log(err);
else
console.log('save foo successfully....');
})
错误会拿出
{ [ValidationError: Foo validation failed]
message: 'Foo validation failed',
name: 'ValidationError',
errors:
{ 'foo.bar':
{ [ValidatorError: foo.bar exceeds the limit 10]
properties: [Object],
message: 'foo.bar exceeds the limit 10',
name: 'ValidatorError',
kind: 'user defined',
path: 'foo.bar',
value: [Object] } } }
你最好在服务器上用['$做这个切片'](https://docs.mongodb.org/v3.0/reference/operator/update/slice/)修饰符'$ push'。这比要求当前文档存储在内存中以验证它的长度要好得多。 –