2012-05-16 9 views
8

は、私が保存してMongooseJS ObjectIdが平等テストに失敗するのはなぜですか?

var obj1, obj2; 

instance.save(function(err, saved) { 
    obj1 = saved; 
}); 

Model.find(obj1._id).run(function(err, retrieved) { 
    obj2 = retrieved; 
}); 

を次のように私はコンソールに印刷する場合、同一のオブジェクトを取得すると仮定し、たObjectIdは同じです。両方のObjectIdでtoStringを呼び出すと、それらは等しいです。しかし、まっすぐにする

obj1._id == obj2._id 

falseを返します。ここで何が起きてるの?

答えて

19

ObjectIdはオブジェクトであるため、標準==等価性テストでは、含まれているid値ではなく、等価性のための参照を比較しています。値を比較する正しい方法は、ObjectId.equalsを次のように使用することです:

obj1.equals(obj2) 
関連する問題