Mongo ObjectID не равны друг другу - PullRequest
0 голосов
/ 27 июня 2018
new Mongo.ObjectID('18986769bd5eaaa42cb565b1') == new Mongo.ObjectID('18986769bd5eaaa42cb565b1')

возвращает ложь

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

возвращает истину

Это ошибка, особенность или мне нужно работать только с ними, используя valueOf (), и преобразовывать ее обратно из строки, когда мне нужно работать с базой данных?

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Это потому, что MongoDB полностью основан на JSON, поэтому, даже если конкретный фрагмент информации сам по себе является строкой, Mongo все равно доставляет его как объект JSON. Поэтому вам нужно разобрать его обратно в строковую форму, чтобы вы могли использовать его где-то еще.

0 голосов
/ 11 июля 2018

Вам стоит взглянуть на этот вопрос , он может решить ваш. По сути, они говорят, что вам нужно использовать метод equals, предоставляемый библиотекой mongo, которую вы используете

0 голосов
/ 27 июня 2018

Это совершенно нормально, поскольку два объекта не равны друг другу, даже если они содержат одинаковую информацию. Вам необходимо просмотреть все свойства и сравнить их по отдельности.

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);
...