【问题标题】:Mongo ObjectIDs not equal to eachotherMongo 对象 ID 不相等
【发布时间】:2018-12-06 15:52:55
【问题描述】:
new Mongo.ObjectID('18986769bd5eaaa42cb565b1') == new Mongo.ObjectID('18986769bd5eaaa42cb565b1')

返回假

new Mongo.ObjectID('18986769bd5eaaa42cb565b1').toString() == new Mongo.ObjectID('18986769bd5eaaa42cb565b1').toString()

返回真

这是一个错误、一个功能,还是我只需要使用 valueOf() 处理这些并在我需要使用数据库时将其从字符串转换回来?

【问题讨论】:

  • 两个独立的 JavaScript 对象从不 == 到彼此。
  • 你应该看看这个问题,它可能会解决你的问题stackoverflow.com/questions/11637353/… 基本上他们说你需要使用你正在使用的mongo库提供的equals方法
  • @Roger,请添加您的评论作为答案,以便我接受。
  • @TylerClendenin 完成!

标签: javascript mongodb meteor


【解决方案1】:

你应该看看这个question,它可能会解决你的问题。基本上,他们说你需要使用你正在使用的mongo库提供的equals方法

【讨论】:

    【解决方案2】:

    这是因为 MongoDB 完全基于 JSON,所以即使一条特定的信息本身是一个字符串,Mongo 仍然将它作为 JSON 对象传递。因此,您需要将其解析回字符串形式,以便您可以在其他地方使用它。

    【讨论】:

      【解决方案3】:

      这是完全正常的,因为即使两个对象包含相同的信息,它们也不相等。您需要遍历所有属性并单独比较它们。

      console.log({} === {});

      例子

      const obj1 = {id: 12345}
      const obj2 = {id: 12345}
      
      console.log(obj1 === obj2);
      
      let same = true;
      for(const prop in obj1){
        if(obj2.hasOwnProperty(prop) && obj1[prop] !== obj2[prop]){
            same = false;
            break;
        }
      }
      
      console.log(same);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-22
        • 2014-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-11
        • 2015-11-16
        • 1970-01-01
        相关资源
        最近更新 更多