我在 NodeJS 中结合 UnderscoreJS 和 MongooseJS 时遇到问题。我有 Mongoose 的结果,我想过滤一个数组
var __ = require("underscore"),
platformInfo = __.findWhere(user.platforms, {"pId": platformId});
但 user.platforms 中的 pId 是一个 ObjectId,无法找到。 但是如果我做一个 each 并像这样比较一切都可以:
__.each(user.platforms, function(platform){
if(platform.pId.toString() == platformId){
}
});
我如何在 findWhere 方法(一行,很酷)中找到相同的结果?谢谢
最佳答案
遗憾的是,mongodb ObjectId 实例无法与 JavaScript 的相等运算符 ==
或 ===
一起正常工作。您要么需要使用提供的方法:objectId1.equals(objectId2)
,要么确保它们都转换为字符串,然后下划线或 ===
将起作用。
platformInfo = _.filter(user.platforms, function (platform) {
return platform.pId.toString() === platformId;
})
关于javascript - 使用下划线通过 ObjectId 过滤 mongodb 对象结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18701472/