我的应用中有2个Mongoose模型,即User
和Post
。用户可以关注其他用户,创建/阅读/更新/删除帖子。在其中一条路线上,登录用户(已获得授权部分)应该获得由他所关注的用户创建的所有帖子。
以下是User
...
var UserSchema = new Schema({
username: String,
email: String,
password: String,
posts: [{
type: Schema.Types.ObjectId,
ref: 'Post'
}],
following: [{
type: Schema.Types.ObjectId,
ref: 'User'
}]
});
...和Post
模型。
var PostSchema = new Schema({
title: String,
summary: String,
body: String,
author: [{
type: Schema.Types.ObjectId,
ref: 'User'
}]
});
基本上我想要检索author
中包含req.user.following
的所有帖子。
我尝试找到这样的帖子:
Post.find({ author: req.user.following }).exec(function(err, posts){
// handling results, etc
});
但是,当然,它没有用。我一直在考虑像在PHP / MySQL环境中那样实现它,就像创建下面的另一个模型一样,它可以存储谁跟随谁,但我可能仍然遇到一些像上面那样的问题。
作为Node.js的初学者(事实上也是MongoDB),我真的很感激,如果你能给我一些关于我应该如何做节点方式的指示,甚至如果你能指出我的代码的某些方面可以做得更好。谢谢!
答案 0 :(得分:1)
您已关闭,只需使用$in
运算符:
Post.find({ author: { $in: req.user.following }}).exec(function(err, posts){
// handling results, etc
})
您现有的查询正在寻找两个数组之间的完全匹配。