1

我有这个模型:

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 }

这个测试总是返回 -1

// req.params['member'] === '50376767b5c99cd862000003'
var member_id = mongoose.Types.ObjectId(req.params['member']);

console.log($.inArray(member_id, huntgroup.members));

谁能告诉我为什么?

警告:我是 mongoose、jquery 和 javascript 的新手,所以要温柔;)

4

1 回答 1

2

这是因为$.inArray仅检查 ObjectId 对象上的引用相等性。

要比较ObectIds的equals,您需要通过执行以下操作来使用运算符ObjectId

huntgroup.members.forEach(function(member) {
    if (member.equals(member_id)) {
        // Yes, member_id is contained in the array
    }
});
于 2012-08-25T18:49:35.457 回答