首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >比较mongoose _id和字符串

比较mongoose _id和字符串
EN

Stack Overflow用户
提问于 2012-07-25 02:48:05
回答 5查看 134.6K关注 0票数 260

我有一个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

我假设这是某种数据类型问题,但我不确定如何将results.userId转换为数据类型,这将导致上面的比较是真的,而我的外包大脑(又名谷歌)一直无法提供帮助。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-07-25 03:38:21

Mongoose使用mongodb本地驱动程序,该驱动程序使用自定义的ObjectID类型。可以将ObjectID与.equals()方法进行比较。以results.userId.equals(AnotherMongoDocument._id)为例。如果您希望以ObjectID格式存储ObjectID的字符串化版本或cookie,则JSON类型还有一个toString()方法。

如果您使用ObjectID = require("mongodb").ObjectID (需要mongodb原生库),您可以使用results.userId instanceof ObjectID检查results.userId是否是有效的标识符。

等。

票数 446
EN

Stack Overflow用户

发布于 2012-07-25 03:38:08

ObjectID是对象,所以如果只将它们与==进行比较,就是在比较它们的引用。如果要比较它们的值,则需要使用ObjectID.equals方法:

if (results.userId.equals(AnotherMongoDocument._id)) {
    ...
}
票数 74
EN

Stack Overflow用户

发布于 2017-03-28 18:27:02

将对象id转换为字符串(使用toString()方法)就可以了。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11637353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档