为什么我的MongooseJS ObjectIds无法通过相等测试?

时间:2012-05-16 22:03:47

标签: mongodb mongoose

假设我按如下方式保存和检索相同的对象

var obj1, obj2;

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

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

当我打印到控制台时,ObjectIds是相同的。如果我在两个ObjectIds上调用toString它们是相等的。然而,直接做

obj1._id == obj2._id

返回false。这里发生了什么?

1 个答案:

答案 0 :(得分:19)

ObjectIds是对象,因此标准==相等测试比较引用是否相等,而不是包含的id值。比较它们的值的正确方法是使用ObjectId.equals:

obj1.equals(obj2)