我的猫鼬模式+验证
var schemaInterest = new schema({
active_elements: {
type: [String]
},
pending_elements: {
type:[String]
}
});
schemaInterest.methods.matchElements = function matchElements() {
this.find({active_elements: this.pending_elements}, function(){
//shows all the matched elements
});
};
我不知道如何在mongoose中处理错误处理。我想要它,如果元素匹配错误将返回如果没有匹配,则验证成功。有什么想法吗?
答案 0 :(得分:2)
尝试使用this.pending_elements
在 validation 中添加其他属性,并使用 lodash 库{{}来比较数组3}}和_.isEqual()
方法:
var schemaInterest = new schema({
active_elements: {
type: [String]
},
pending_elements: {
type: [String]
}
});
schemaInterest.path('active_elements').validate(function (v) {
return _.isEqual(_.sortBy(v), _.sortBy(this.pending_elements))
}, 'my error type');
- 更新 -
从OP注释(感谢@JohnnyHK指出),至少需要一个匹配元素,而不是整个数组,因此你需要_.sortBy()
方法创建一个唯一值数组包含在使用SameValueZero
进行相等比较的所有提供的数组中:
_.intersection(v, this.pending_elements)
就足够了。因此,您的验证功能如下所示:
schemaInterest.path('active_elements').validate(function (v) {
return _.intersection(v, this.pending_elements).length > 0
}, 'my error type');