查询当前用户后跟用户的帖子

时间:2014-08-31 16:35:33

标签: node.js mongodb express mongoose

我的应用中有2个Mongoose模型,即UserPost。用户可以关注其他用户,创建/阅读/更新/删除帖子。在其中一条路线上,登录用户(已获得授权部分)应该获得由他所关注的用户创建的所有帖子。

以下是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),我真的很感激,如果你能给我一些关于我应该如何做节点方式的指示,甚至如果你能指出我的代码的某些方面可以做得更好。谢谢!

1 个答案:

答案 0 :(得分:1)

您已关闭,只需使用$in运算符:

Post.find({ author: { $in: req.user.following }}).exec(function(err, posts){
    // handling results, etc
})

您现有的查询正在寻找两个数组之间的完全匹配。