2012-05-16 59 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是相同的。如果我在兩個ObjectIds上調用toString,它們都是平等的。但是直接做

obj1._id == obj2._id 

返回false。這裏發生了什麼?

回答

19

ObjectIds是對象,因此標準==相等性測試正在比較相等的引用,而不是包含的id值。比較它們的值的正確方法是使用ObjectId.equals:

obj1.equals(obj2) 
相關問題