Mongoose Model.find - >编辑 - >打回来?

时间:2016-03-06 22:40:01

标签: node.js mongodb mongoose middleware

对于模糊的标题感到抱歉,但我想要做的是以下内容: 我有2个猫鼬模特:帖子和用户(可以是帖子的作者)

const Post = new Schema({
    title: {type: String, required: true, unique: true},
    content: {type: String, required: true},
    date_created: {type: Date, required: true, default: Date.now},
    authorId: {type: String, required: true},             // ObjectId
    author: {type: Schema.Types.Mixed},
    page: {type: Boolean, required: true, default: false}
});

post.find()
mongoose向MongoDB发送查询
MongoDB返回文档
根据authorId属性检索作者的中间件 将找到的用户添加到帖子author字段
post.find callback

这可能吗?

1 个答案:

答案 0 :(得分:1)

是的,mongoose document references and population会为你做这件事。

const Post = new Schema({
    // ...
    author: {type: mongoose.Schema.Types.ObjectId, required: true, ref: "User"}
});

ref: "User"告诉Mongoose使用" User"键入对象类型。确保你有一个"用户"用Mongoose定义的模型,否则会失败。

要加载完整的对象图,请使用查询的populate方法:


Post
  .findOne(/* ... */)
  .populate('author')
  .exec(function (err, story) {
    // ...

  });

P.S。我在my MongooseJS Fundamentals截屏视频包中详细介绍了这个内容。