2012-05-16 34 views
8

Giả sử tôi có thể cất và lấy đối tượng giống hệt nhau như sauTại sao đối tượng MongooseJS của tôi thất bại trong bài kiểm tra bình đẳng?

var obj1, obj2; 

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

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

Khi tôi in ra cửa sổ Console, ObjectIds đều giống nhau. Nếu tôi gọi toString trên cả hai ObjectIds thì chúng bằng nhau. Tuy nhiên, hãy thực hiện một cách thẳng

obj1._id == obj2._id 

Trả về giá trị sai. Chuyện gì đang xảy ra ở đây?

Trả lời

19

ObjectIds là các đối tượng để kiểm tra bình đẳng == bình đẳng so sánh các tham chiếu về bình đẳng, không phải các giá trị id chứa. Cách đúng để so sánh các giá trị của chúng là sử dụng ObjectId.equals như:

obj1.equals(obj2) 
Các vấn đề liên quan