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的值 ,您需要使用ObjectId
的equals
运算符,如下所示:
huntgroup.members.forEach(function(member) { if (member.equals(member_id)) { // Yes, member_id is contained in the array } });