繁体   English   中英

NodeJS和MongoDB - 根据id数组获取对象

[英]NodeJS & MongoDB - Get Objects based on array of ids

我在基于ObjectIds数组返回集合中的对象时遇到问题。

我有10个项目的集合。 在iOS应用程序中,我传递了一个用户已保存为收藏夹的ObjectIds数组,以便在收藏夹选项卡中返回这两个,例如 -

["59f85eae4545XXX9b94d53d3", "59f85eae45454XXXb94d76a1"]

现在,我刚刚使用NodeJS在请求顶部硬编码了ObjectIds,直到我得到请求工作,下面是请求 -

exports.list_favs = function(req, res) {
  Articles.find({
    _id: { $in: [
     mongoose.Types.ObjectId('59f85aXXXXf1769b94d53ce'),
     mongoose.Types.ObjectId('59f85eaeXXXX1769b94d53d3')
 ]}
}, function(err, articles) {
if (err)
  res.send(err);
  res.json({
    data: {
      articles
    }
   });
 });
};

我甚至试过这个 -

exports.list_favs = function(req, res) {

var ids = new Array( new ObjectId("59f85eaeXXXX1769b94d53d3"), new 
ObjectId("59f85aXXXXf1769b94d53ce") );

Articles.find({
    _id: { $in: ids}
}, function(err, articles) {
if (err)
  res.send(err);
  res.json({
    data: {
      articles
    }
   });
 });
};

这两个都给我一个错误“CastError”

"Cast to ObjectId failed for value \"favourites\" at path \"_id\" for model \"Articles\""

这就是它在数据库中的样子,所以我完全不知道我做错了什么。 ObjectId在数据库中的图像

在此输入图像描述

我在StackOverflow上跟随了多个其他答案而没有运气。

要点到完整的项目代码

这样做:

 exports.list_favs = function(req, res) { Articles.find({ _id: { $in: [mongoose.Schema.ObjectId('59f85aXXXXf1769b94d53ce'), mongoose.Schema.ObjectId('59f85eaeXXXX1769b94d53d3')] } }, function(err, articles) { if (err) res.send(err); else res.json({ data: { articles } }); }); }; 

最好的方法是:

Articles.find( { _id : { $in : yourArray } } );

希望这对你有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM