我正在构建一个在数组中有一个复杂对象的模式:
foo:{
bar:[{
ItemA:String,
ItemB:String
}]
}
我想为数组中的对象添加验证,以便检查数组大小(我想将数组的大小限制为10)。
如何构建模式以验证数组中的那种对象?
答案 0 :(得分:2)
您可以通过Schema中的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] } } }