inArray mongoose ObjectID

我有这个模型:

var HuntGroupSchema = new Schema({ name : { type: String, required: true } ,domain : { type: ObjectId, required: true, ref: 'Domain' } ,members : [{ type: ObjectId, ref: 'User'}] ,email : { type: String, unique: true} ,pin : { type: Number, default: 0} ,extension : { type: Number, required: true} ,timescheme : { type: ObjectId, ref: 'TimeScheme'} ,ddi : { type: String} }); 

并有这个数据

 db.huntgroups.find() { "_id" : ObjectId("50373487947749f0370000b0"), "ddi" : "01376xxxxxx", "domain" : ObjectId("502807e9b9e737036d000018"), "email" : "julian@dotr.com", "extension" : 3001, "members" : [ ObjectId("50376767b5c99cd862000003") ], "name" : "test22", "pin" : 1234 } 

这个testing总是返回-1

 // req.params['member'] === '50376767b5c99cd862000003' var member_id = mongoose.Types.ObjectId(req.params['member']); console.log($.inArray(member_id, huntgroup.members)); 

谁能告诉我为什么?

警告:我是mongoose,jQuery和JavaScript的新手,所以去温柔;)

这是因为$.inArray只是在ObjectId对象上检查引用相等。

要比较ObectId的 ,您需要使用ObjectIdequals运算符,如下所示:

 huntgroup.members.forEach(function(member) { if (member.equals(member_id)) { // Yes, member_id is contained in the array } });