如何使用nodejs从我的数据模型中的嵌套对象填充mongodb中的数据集合?

时间:2018-01-15 03:43:42

标签: node.js mongodb

这些是我的数据模型:

    var campSchema = new mongoose.Schema({
   image : String,
   description : String,
   comment: [
      {
         type: mongoose.Schema.Types.ObjectId,
         ref: "Comment"
      }
   ],
   feeds : [
      {
         type: mongoose.Schema.Types.ObjectId,
         ref: "Feed"
      }
   ]
});

和:

    var feedSchema = new mongoose.Schema({
    text : String,
    createdAt: { type: Date, default: Date.now },
    author : {
        id: {
         type: mongoose.Schema.Types.ObjectId,
         ref: "User"
        },
        username: String
    },
    comment: [
      {
         type: mongoose.Schema.Types.ObjectId,
         ref: "Comment"
      }
  ]
});

这是我的nodejs请求,它不会将评论填充到我的模板中:

app.get("/feeds", isLoggedIn, function(req, res) {
    console.log(req.user);
    Camp.find({}).populate("feeds").populate("feeds.comment").exec(function(err, myCamp){
        if(err){
            console.log(err);
        } else {
            myCamp.forEach(function(camp){
                if(camp.address === req.user.address){ 
                        console.log(building);
                         res.render("feeds/feeds", {building : building});
                }
            });
        }
    });
});

哪个不起作用!我想在 Feed 数据模型中填充评论到我的模板中。 如果有人能提供帮助,我将非常感激,谢谢。

1 个答案:

答案 0 :(得分:1)

您应该将代码更改为

.populate({
            path: 'feeds',
            model: 'Feed',
            populate: {
                path: 'comment',
                model: 'Comment'
            }
        })

使用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval插件可以更轻松地帮助您轻松完成。