Ember-data从模型中获取“belongsTo”attr(id)而不解析实际对象

时间:2015-07-09 18:40:11

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

我希望获得模型属性(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.

我非常感谢你们的每一个帮助。

THX

1 个答案:

答案 0 :(得分: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')