Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

Suppose I save and retrieve identical objects as follows

var obj1, obj2;

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

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

When I print to the console, ObjectIds are the same. If I call toString on both ObjectIds they are equal. However doing a straight

obj1._id == obj2._id

Returns false. What is happening here?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.1k views
Welcome To Ask or Share your Answers For Others

1 Answer

ObjectIds are objects so a standard == equality test is comparing the references for equality, not the contained id values. The right way to compare their values is to use ObjectId.equals as:

obj1.equals(obj2)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...