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

Posted

技术标签:

【中文标题】如何使用nodejs从我的数据模型中的嵌套对象填充mongodb中的数据集合?【英文标题】:How to populate a data collections in mongodb from a nested object in my data model using nodejs? 【发布时间】: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 填充到我的模板中。 如果有人可以提供帮助,我将不胜感激,谢谢。

【问题讨论】:

您好,请查看链接 1) ***.com/questions/28179720/…。 2)***.com/questions/19222520/…。 Mongoose 4.5 及更高版本支持... 【参考方案1】:

你应该把代码改成

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

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

【讨论】:

以上是关于如何使用nodejs从我的数据模型中的嵌套对象填充mongodb中的数据集合?的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose/Nodejs - 填充函数仅返回用户的对象 ID

Populate() ref 嵌套在对象数组中

如何更新nodejs中的mongo嵌套数组?

如何从 React 中的嵌套对象数组中提取数据?

如何使用 Express 和 Axios 从我的 get 请求发送响应对象到前端?

如何仅在猫鼬中使用聚合填充嵌套在对象数组中的字段?