Ember-данные получают "attTo" attr (id) из модели без разрешения фактического объекта
Я хочу получить атрибут модели (id) "assignTo" без принудительного вызова сервера или разрешения объекта. Я получил членство с пользователем. Большинство пользователей загружены, и поэтому я хочу сделать серверный вызов только для некоторых пользователей. Недавно я обновил 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 больше не включает в себя принадлежащие идентификаторы.
Заканчивается на этом прогрессом:
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.
Я действительно очень ценю любую помощь в этом.
Спасибо
1 ответ
Нашел это. На основании этого ответа:
ember-data: Как определить, загружено ли отношение модели async: true без запуска загрузки?
Я смог выяснить это для 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')