在MongoDB中将populate()用于两个不同的模式

时间:2015-07-06 10:27:48

标签: node.js mongodb mongoose

我有两个MongoDB集合 - 评论

var mongoose = require('mongoose');

var CommentSchema = new mongoose.Schema({
  body: String,
  author: String,
  upvotes: {type: Number, default: 0},
  post: { type: mongoose.Schema.Types.ObjectId, ref: 'Profile' }
});

mongoose.model('Comment', CommentSchema);

和用户

var mongoose = require('mongoose');

var UserSchema = new mongoose.Schema({
  userName: String,
  userJobRole: String,
  userEmail: String,
  userPhone: String,
  userTimeZone: String,
  post: { type: mongoose.Schema.Types.ObjectId, ref: 'Profile' }
});

mongoose.model('User', UserSchema);

我想在get请求中为每个模式使用populate。一个用户和一个用于这些模型的评论。

router.get('/profiles/:profile', function(req, res, next) {
  req.post.populate('users', function(err, post) {
    if(err) { return next(err) }
    res.json(post);
  });
});

我只能弄清楚如何打电话。

Mongoose是否允许您从两个模式填充?

1 个答案:

答案 0 :(得分:1)

为了填充多个路径,您可以将空格分隔的路径名字符串传递给任何文档上的populate方法,如下所示:

Story
.find(...)
.populate('fans _creator') // space delimited path names
.exec()

这是直接来自Mongoose docs http://mongoosejs.com/docs/populate.html