【问题标题】:How to populate a data collections in mongodb from a nested object in my data model using nodejs?如何使用nodejs从我的数据模型中的嵌套对象填充mongodb中的数据集合?
【发布时间】:2018-06-23 17:05:01
【问题描述】:

这些是我的数据模型:

    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 请求,它没有将 cmets 填充到我的模板中:

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});
                }
            });
        }
    });
});

这是行不通的!我想将 Feeds 数据模型中的 cmets 填充到我的模板中。 如果有人可以提供帮助,我将不胜感激,谢谢。

【问题讨论】:

标签: node.js mongodb


【解决方案1】:

你应该把代码改成

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

最好使用mongoose-deep-populate 插件,它可以帮助您轻松完成。

【讨论】:

    猜你喜欢
    • 2021-07-18
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 2022-06-10
    • 2015-12-07
    • 2013-01-12
    相关资源
    最近更新 更多