Sails beta 0.10.0-rc7:填充 [A]->[B]->[C] 关联

Posted

技术标签:

【中文标题】Sails beta 0.10.0-rc7:填充 [A]->[B]->[C] 关联【英文标题】:Sails beta 0.10.0-rc7: populate [A]->[B]->[C] association 【发布时间】: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: '....' .... 

            
        ]

    

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

在此先感谢 :_)

【问题讨论】:

我认为这在另一个页面中得到了回答:***.com/questions/23446484/… 【参考方案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);
    
  );

【讨论】:

以上是关于Sails beta 0.10.0-rc7:填充 [A]->[B]->[C] 关联的主要内容,如果未能解决你的问题,请参考以下文章

Sails.js:新创建的记录在刷新之前不会填充到页面上

从 Sails.js 中的关联模型访问模型的属性

Sails.js 将密钥和数据流式传输到 Angular

Sails v1.0:在 mongo 中使用自定义主键时出错

npm install 不在 GitHub 上安装最新版本

Xcode 13 beta 5 错误:UIViewController 缺少初始化期间填充的初始特征集合