我希望获得模型属性(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
答案 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')