猫鼬复杂人口

时间:2018-12-28 15:15:37

标签: javascript mongoose

我确实通过id找到了帖子,并且做了控制台日志输出,就是这样:

{ comments: [ 5c263bf01b764a11c479f69c, 5c263c41133ace1655edee76 ],
  _id: 5c263bc61b764a11c479f69b,
  title: 'good laptop',
  category: 'Laptop',
  brand: 'dell',
  Condition: 'Good Condition',
  image: 'https://avisassets.abgemea.com/.imaging/flexibleIntroLarge/dms/DMS/local/ZA/fleet/fleet-page/luxury-cars-feature.jpg',
  price: 2000,
  priceState: 'Negociable',
  city: 'Algiers',
  phone: '71717171555',
  email: 'test@test.com',
  description: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
  date: '28/11/2018',
  userId: 5c25344c321f0d5a777ace00,
  __v: 2 }

我确实阅读了有关populate的猫鼬文档,但是我不知道如何填充userId以及填充comments和{{ 1}}

1 个答案:

答案 0 :(得分:1)

假设userId是您的Posts模式中的一个字段,则可以通过以下方式做到这一点:

Posts.findOne({ id: 'your-post-id' })
  .populate('userId')
  .populate({ path: 'comments',
              populate: { path: 'userId',
                          model:'User' }
           })
  .exec(callback);

您的架构应与此类似:

var postsSchema = new Schema({
    comments: { type: [Schema.ObjectId], ref: 'Comment' },
    userId: { type: Schema.ObjectId, ref: 'User' },
    ...
});
var commentsSchema = new Schema({
    userId: { type: Schema.ObjectId, ref: 'User' },
    ...
});