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));

誰でも理由を教えてもらえますか?

警告: 私はマングース、jquery、javascript の初心者なので、優しくしてください ;)

4

1 に答える 1

2

これ$.inArrayは、 ObjectId オブジェクトの参照の等価性のみをチェックしているためです。

代わりに ObectIdsのを比較するには、次のような操作を行ってequalsof 演算子を使用する必要があります。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 に答える