我有一个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)无法提供帮助。
Mongoose使用mongodb-
native驱动程序,该驱动程序使用自定义ObjectID类型。您可以将ObjectID与.equals()
方法进行比较。在您的示例中,results.userId.equals(AnotherMongoDocument._id)
。toString()
如果您希望以JSON格式或Cookie来存储ObjectID的字符串化版本,则ObjectID类型也具有一种方法。
如果使用ObjectID = require("mongodb").ObjectID
(需要mongodb-
native库),则可以使用来检查是否results.userId
为有效标识符results.userId instanceof ObjectID
。
等等。
我有一个node.js应用程序,它提取一些数据并将其粘贴到对象中,如下所示: 当我基于存储的ID执行if/then时,比较永远不会为真: 当我对两个id执行console.log时,它们完全匹配: 我假设这是某种类型的数据类型问题,但我不确定如何将results.userId转换为一种数据类型,这将导致上述比较结果为真,而我的外包大脑(也称谷歌)也无法提供帮助。
问题内容: 和猫鼬有什么区别?参考哪个更好? 问题答案: 从文档中: Mongoose默认情况下为您的每个模式分配一个id虚拟获取器,该获取器将文档_id字段强制转换为字符串,对于ObjectIds,则返回其hexString。 因此,基本上,getter返回文档的字符串表示形式(默认情况下将其添加到所有MongoDB文档中,并且默认类型为)。 关于什么是更好的引用,这完全取决于上下文(即,您想要
我正在使用Node.js和Mongoose检索Mongo文档,如下所示: 但它没有返回“_id”字段,我遗漏了什么? 在文档中,它说默认情况下应该包括_id 谢谢 **编辑** 解决方案:我必须在模式中指定它: var schema=新猫鼬。模式({u id:String……。});
问题内容: 我有一个简单的工具来构建文档集合,然后自动格式化它们以进行EPUB或LaTeX渲染,该工具写在ExpressJS之上。我正在使用Coffeescript,如果那很重要(我对此表示怀疑)。 使用猫鼬,我有以下几点: Offrefs没有指定它的含义,因为我希望能够在其他活页夹中包含一些活页夹,以创建逻辑集合:“这些用于打印机”,“这些用于epub”,“这些仅用于Web, ”等等。(我已经剔
问题内容: 我听说散列(即将字符串或对象转换为数字)用于字符串等,因为比较数字比字符串更容易。如果为真,这是什么原因? 问题答案: 不一定是这种情况,但大多数时候可能是这样。 请考虑以下情况: 我想比较字符串“ apples”和“ oranges”。如果我只想确定“ apples” ==“ oranges”,我只需要比较每个字符串的第一个字符:’a’!=’o’=>“ apples”!=“ oran
我有字符串数组:15MB、12MB、1TB、1GB。我想通过遵循MB小于GB和TB的规则来对它们进行词典比较。所以最后我想得到:12MB,15MB,1GB,1TB。我找到了一个比较字母的方法: 我在考虑用数字和字母拆分字符串,但我如何用字母“MB”对它们进行排序。然后根据他们的数字。我是使用两个比较器还是其他什么?