【发布时间】:2016-01-13 03:00:10
【问题描述】:
我使用 Node.js 服务器和 async.js 处理异步回调,以及 Mongoose 连接到我的 Mongo 数据存储。我正在尝试确定两个对象_id 是否相等,如果是,则执行一些代码。但是,比较没有正确执行。代码如下:
async.forEachSeries(offerItem.offers, function(currentOfferItemOffer, callback) {
Offer.findById(currentOfferItemOffer, function(err, offerItemOffer) {
if (err) throw err;
console.log(offerItemOffer._id) // 56953639ea526c8352081fdd
console.log(offer._id) // 56953639ea526c8352081fdd
if (offerItemOffer._id !== offer._id) {
console.log('offerItemOffer._id !== offer._id') // Is being logged even though it shouldn't
....
我很困惑为什么像这样的简单比较不能正确执行。当使用 '===' 检查两个 _id 是否相等时,代码会按需要运行 - 但这在逻辑上是不正确的,因为只有在 _id 不相等时才应执行下一个块。任何想法将不胜感激。谢谢!
【问题讨论】:
-
你确定你没有真正的 Mongo objectID,也没有十六进制字符串,你用
typeof检查了这些 ID -
看起来像对象,而不是字符串。
-
offerItemOffer._id.toString()应该解决它 -
工作就像一个魅力。谢谢!
标签: javascript node.js mongodb mongoose async.js