我正在构建一个在数组中有一个复杂对象的模式:
foo:{
bar:[{
ItemA:String,
ItemB:String
}]
}我希望向数组中的对象添加验证,以检查数组大小(我希望将数组的大小限制在10)。
如何构造模式以验证数组中的这类对象?
发布于 2016-03-07 04:57:35
您可以通过模式中的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://stackoverflow.com/questions/35835376
复制相似问题