【问题标题】:Mongo, Node.js deep populateMongo、Node.js 深度填充
【发布时间】:2017-04-08 17:02:48
【问题描述】:

我正面临一个严重的人口问题,

var commentSchema = mongoose.Schema({
        name: String });

var userSchema = mongoose.Schema({
    userId: { type: String, default: '' },
    comments: [subSchema]
});

var socialSchema = mongoose.Schema({
    userId: {type: mongoose.Schema.Types.ObjectId, ref: "user"},
    countryCode: { type: String, default: '' },
    socialId: {type: mongoose.Schema.Types.ObjectId, ref: "user"},
    dateAdded: { type: Date, default: Date.now }
});

目标是填充“社交”文档并获取具有匹配 ID 的 cmets。解决方案是将 socialId 的“ref”设置为“user.cmets”,而不仅仅是用户。这样它总是返回 null。

 Social.find().populate('socialId').exec(function(err, feed) {
    if (err) {
      console.log(err);
      throw err;
    }else{
      res.json({data: feed, message:"Getting feed"});
    }

  })

【问题讨论】:

    标签: javascript node.js mongodb database


    【解决方案1】:

    这个mongoose-deep-populate有一个猫鼬插件

    var deepPopulate = require('mongoose-deep-populate')(mongoose);
    var Schema = new mongoose.Schema({
        ...
    });
    Schema.plugin(deepPopulate);
    
    // while populating:
    
    Schema.find(...).deepPopulate({
        paths: [], // list of paths goes here
        {
            populate: {
                'first.path': 'things to select' // space seperated list of fields to select
            }
        }
    });
    

    你可以阅读更多关于这个here

    【讨论】:

      【解决方案2】:

      据我所知,您可能需要再次填充它们我认为仅在一个查询中不可能进行深度填充。

         Social.find().populate('socialId').exec(function(err, feed) {
        if (err) {
          console.log(err);
          throw err;
        }else {
          Comments.populate(feed, {path: 'socialId.user.comments'}, function (err, populatedFeeds) {
            if (err) {
              console.log(err);
              throw err;
            } else {
              res.json({data: feed, message: "Getting feed"});
            }
          })
        }
      })
      

      【讨论】:

        猜你喜欢
        • 2015-10-12
        • 1970-01-01
        • 2015-02-09
        • 2018-12-12
        • 1970-01-01
        • 2017-09-15
        • 2018-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多