2012-05-16 9 views
8

Przypuśćmy zapisu i odczytania identyczne obiekty następującoDlaczego moje obiekty Object MongooseJS nie sprawdzają testu równości?

var obj1, obj2; 

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

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

Kiedy drukować na konsoli ObjectIds są takie same. Jeśli zadzwonię doString na obu ObjectIdach, są one równe. Jednak wykonanie prostej powoduje zwrócenie wartości false. Co tu się dzieje?

Odpowiedz

19

Obiekty obiektu są obiektami, więc standardowy test równości == porównuje odniesienia dla równości, a nie zawarte wartości identyfikatora. Odpowiednim sposobem porównania ich wartości jest użycie obiektu ObjectId.equals jako:

obj1.equals(obj2) 
Powiązane problemy