Вопрос по mongodb, mongoose – Почему мои Objects MongooseJS не проходят тест на равенство?

8

Предположим, я сохраняю и извлекаю идентичные объекты следующим образом

var obj1, obj2;

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

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

Когда я печатаю в консоль, ObjectIds одинаковы. Если я вызываю toString для обоих ObjectIds, они равны. Однако делать прямо

obj1._id == obj2._id

Возвращает ложь. Что здесь происходит?

Ваш Ответ

1   ответ
19

ObjectIds являются объектами, поэтому стандартный == тест на равенство сравнивает ссылки на равенство, а не содержащиеся в них значения id. Правильный способ сравнить их значения - использовать ObjectId.equals как:

obj1.equals(obj2)

Похожие вопросы