使用Underscore通过ObjectId过滤mongodb对象结果

use*_*825 3 javascript mongoose mongodb node.js underscore.js

我在NodeJS中组合UnderscoreJS和MongooseJS时遇到问题.我有mongoose的结果,我想过滤一个数组

var __ = require("underscore"),
    platformInfo = __.findWhere(user.platforms, {"pId": platformId});
Run Code Online (Sandbox Code Playgroud)

但是user.platforms中的pId是一个ObjectId,无法找到.但是,如果我做了一个并且比较像这样可以:

__.each(user.platforms, function(platform){

                if(platform.pId.toString() == platformId){

                }

});
Run Code Online (Sandbox Code Playgroud)

我如何在findWhere方法中找到(一行,酷)相同的结果?谢谢

Pet*_*ons 7

遗憾的是,mongodb ObjectId实例无法与JavaScript的相等运算符=====.您需要使用提供的方法:objectId1.equals(objectId2)或确保它们都转换为字符串然后下划线或===将工作.

platformInfo = _.filter(user.platforms, function (platform) {
  return platform.pId.toString() === platformId;
})
Run Code Online (Sandbox Code Playgroud)