我无法在基于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上跟随了多个其他答案而没有运气。
答案 0 :(得分:0)
这样做:
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
}
});
});
};
答案 1 :(得分:-1)
最好的方法是:
Articles.find( { _id : { $in : yourArray } } );
希望这对您有帮助