【问题标题】:Why do my MongooseJS ObjectIds fail the equality test?为什么我的 MongooseJS ObjectIds 无法通过相等性测试?
【发布时间】:2012-05-17 08:15:32
【问题描述】:

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

var obj1, obj2;

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

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

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

obj1._id == obj2._id

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

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

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

    obj1.equals(obj2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 2010-09-26
      • 1970-01-01
      相关资源
      最近更新 更多