I have this model:
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}
});
and have this data
db.huntgroups.find()
{ "_id" : ObjectId("50373487947749f0370000b0"), "ddi" : "01376xxxxxx", "domain" : ObjectId("502807e9b9e737036d000018"), "email" : "julian@dotr.com", "extension" : 3001, "members" : [ ObjectId("50376767b5c99cd862000003") ], "name" : "test22", "pin" : 1234 }
and this test always returns -1
// req.params['member'] === '50376767b5c99cd862000003'
var member_id = mongoose.Types.ObjectId(req.params['member']);
console.log($.inArray(member_id, huntgroup.members));
can anyone tell me why ?
Warning: I am a newbie at mongoose, jquery and javascript, so go gentle 😉
It’s because
$.inArrayis only checking for reference equality on the ObjectId objects.To compare the values of the ObectIds instead you’d need to use the
equalsoperator ofObjectIdby doing something like the following: