mongoose验证匹配一个数组与另一个数组的常见字符串?

时间:2015-05-31 01:29:27

标签: javascript arrays node.js mongodb mongoose

我的猫鼬模式+验证

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中处理错误处理。我想要它,如果元素匹配错误将返回如果没有匹配,则验证成功。有什么想法吗?

1 个答案:

答案 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');