如何填充嵌套查询

时间:2015-02-08 15:24:45

标签: javascript node.js mongodb mongoose

我有一个典型的Node.js项目 - Express - Mongoose - MongoDB

我的目标是通过调用主要用户所关注的所有用户的所有近期文章来生成News Feed。

用户模型

var UserSchema = new Schema({
  username: { type: String, required: true, unique: true },
  password: { type: String, required: true },
  email: String,
  articles : [{ type: Schema.Types.ObjectId, ref: 'Article' }],
  follows: [{ type: Schema.Types.ObjectId, ref: 'User' }],
  followers: [{ type: Schema.Types.ObjectId, ref: 'User' }]
});

文章模型

var articleSchema = new Schema({
  _userID: { type: Schema.Types.ObjectId, ref: 'user' },
  url: String,
  summary: String,
  title: String,
  content: String,
  image_url: String,
});

问题:

我正在尝试编写一个执行以下操作的mongoose查询

  1. 按用户ID搜索并获取以下列表
  2. 填写那些关注者最近的文章
  3. 我可以弄清楚如何填充以下内容,但我不知道如何填充以下的受尊重的文章并按时间顺序返回它们(最近>最旧)

        exports.getFeed = function(req, res) {
            var id = mongoose.Types.ObjectId(req.params.id);
            // mongoose query goes here
        };
    

    非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您需要两个查询。

第一个查询是您已经想出并且仍然需要的查询(获取以下列表)。 您基本上需要以下ID的数组,然后您要求此用户数组中的所有文章:

.where('_userID').in(arrayOfFollowIDs)

希望有所帮助