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

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

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

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

__.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 – 可以在Mongoose中相互引用两个模式吗?


下一篇:javascript – 了解MongoDB中的多对多关系以及如何取消引用集合