javascript - 使用下划线通过 ObjectId 过滤 mongodb 对象结果

标签 javascript node.js mongodb mongoose underscore.js

我在 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/

相关文章:

javascript - 比较 JavaScript 中的函数与 .toString()

javascript - 将文本替换为 html。 jQuery

node.js - Nodejs 的 DEBUG 和 NODE_DEBUG 有什么区别?

node.js - NodeJS foreach 没有返回正确的值

c# - "Unable to determine the serialization information for"MongoDB 复杂类型等于空过滤器的错误

node.js - 如何对数组mongodb聚合执行多个$lookup

javascript - 我可以在 jointJS 中动态更改检查器的选择选项 - Raappid

javascript - 如何为传播运算符创建 polyfill

node.js - 使用 Multer 存储对象

haskell - 从 Snap 访问 MongoDB