【问题标题】:Sails beta 0.10.0-rc7: populate [A]->[B]->[C] associationSails beta 0.10.0-rc7:填充 [A]->[B]->[C] 关联
【发布时间】:2014-06-02 13:31:26
【问题描述】:

我正在使用 Sails beta 0.10.0-rc7,但我遇到了模型关联问题。 我有以下方案:

文档 - 有 - 属性 -- 有 -- 类型

具有属性的文档,具有类型。 我正在尝试使用填充仅从一个查询中检索整个结构:

        var query = model.findOne({id: id});

    for (var i = 0; i < model.associations.length; i++) {
        query = query.populate(model.associations[i].alias);
    }

使用该代码,我可以填充模型的第一级:

    res = {
        id: 1,
        name: '....',
        desc: '....',
        // This is populated
        attributes: [{
                id: 1,
                name: '...',
                // THIS Should be populated also!
                type: 1
                // Should be 
                // type: { id: 1, name: '....' .... }

            }
        ]

    }

我怎样才能获得第二层的层次结构(类型)?

在此先感谢 :_)

【问题讨论】:

标签: model associations sails.js populate


【解决方案1】:

您可以使用内置的Blue Bird Promise 功能来实现。 (在 Sails@v0.10.5 上工作)

UserMenuSection.find({
    userRole: userRole,
    type: type
  })
  .sort('orderId asc')
  .populate('items', {
    sort: 'orderId asc'
  })
  .then(function(values) {
    var ids = [];
    _.forEach(values, function(section) {
      _.forEach(section.items, function(item) {
        ids.push(item.id);
      });
    });
    var subItems = UserMenuItem.find({
      Parent: ids
    }).then(function(subItems) {
      return subItems;
    });
    return [values, subItems];
  })
  .spread(function(values, subItems) {
    var subItems = _.groupBy(_.sortBy(subItems, 'orderId'), 'Parent');
    var userMenu = _.map(values, function(section) {
      _.map(section.items, function(item) {
        item.subItems = subItems[item.id];
        return item;
      });
      return section;
    });
    res.json(userMenu);
  })
  .catch(function(err) {
    if (err) {
      var errMsg = "some error messages...";
      sails.log.error(errMsg);
      return res.serverError(errMsg);
    }
  });

【讨论】:

    猜你喜欢
    • 2014-04-11
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2015-10-12
    相关资源
    最近更新 更多