我有一个node.js应用程序,它可以提取一些数据并将其粘贴到对象中,如下所示:
var results = new Object();
User.findOne(query, function(err, u) {
results.userId = u._id;
}
当我基于存储的ID执行if / then时,比较永远不会成立:
if (results.userId == AnotherMongoDocument._id) {
console.log('This is never true');
}
当我执行两个ID的console.log时,它们完全匹配:
User id: 4fc67871349bb7bf6a000002 AnotherMongoDocument id: 4fc67871349bb7bf6a000002
我以为这是某种数据类型问题,但是我不确定如何将result.userId转换为数据类型,从而导致上述比较正确,而我的外包大脑(又名Google)无法提供帮助。
这里建议的三种可能的解决方案具有不同的用例。
在两个像这样的mongoDocuments上比较ObjectID时使用.equals
results.userId.equals(AnotherMongoDocument._id)
将ObjectID的字符串表示形式与mongoDocument的ObjectID进行比较时,请使用.toString()。像这样
results.userId === AnotherMongoDocument._id.toString()