【问题标题】:Ember-data get "belongsTo" attr (id) from model without resolving the actual objectEmber-data 从模型中获取“belongsTo”属性(id)而不解析实际对象
【发布时间】:2015-07-09 18:40:11
【问题描述】:

我想在不强制服务器调用或解析对象的情况下获取模型属性 (id) “belongsTo”。我的会员资格有一个用户。大多数用户已加载,因此我只想为一些用户进行服务器调用。 我最近更新到 ember-data 1.13.4 并且我的旧版本不再工作了。

会员:

user: DS.belongsTo('user', { async: false }),

到目前为止,我这样做是为了检查用户是否已经在商店中:

if (this.store.peekRecord('user', parseInt(membership._internalModel._data.user)) === null)
      return false;

但是随着新的 Ember-Data 更新,_data 不再包含 belongsTo - Ids。

以这个进度结束:

Error while processing route: workgroups Assertion Failed: You looked up the 'user' relationship on a 'membership' with id 21 but some of the associated records were not loaded.

我真的很感谢这方面的每一个帮助。

谢谢

【问题讨论】:

    标签: ember.js ember-data ember-cli


    【解决方案1】:

    找到了。基于这个答案:

    ember-data: How to tell if a model's async: true relationship is loaded without triggering a load?

    我能够弄清楚 ember-data 1.13.4 解决方案:

    membership._internalModel._relationships.initializedRelationships.user.canonicalState.id
    

    这很难看。有更好的想法吗?

    编辑: 这可用于通过函数扩展 DS.Model:

    import DS from 'ember-data';
    
    export default {
      name: 'model-getid',
      initialize: function() {
        DS.Model.reopen({
          getId: function(key) {
            // TODO(sn): support hasMany as well
            const rel = this._internalModel._relationships.initializedRelationships;
            return rel && rel[key] && rel[key].canonicalState && rel[key].canonicalState.id;
          }
        });
      }
    };
    

    现在我们可以在单个关系上像这样:

    membership.getId('organisation')
    

    【讨论】:

      猜你喜欢
      • 2012-08-31
      • 1970-01-01
      • 2014-03-30
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 2019-03-01
      • 2014-05-22
      相关资源
      最近更新 更多