Невозможно загрузить отношения, используя «get» Ember 3.2

Я пытаюсь загрузить отношения, которые, как я знаю, ранее не загружались, но кажется, что он никогда не вызывает мой API для него.

Моя настройка:

// routes/application.js
export default Route.extend({
    model() {
        return this.get('store').findRecord('post', 1, {include: 'user'});
    }
});

// routes/comments.js
export default Route.extend({
    model() {
        let post = this.modelFor('application');
        return post.get('user').get('actionHistory');
    }
});

Раньше actionHistorys userне загружался, поэтому я ожидал бы запроса сервера, чтобы его получить, но это никогда не было сделано. userдоступен.

// models/user.js
export default DS.Model.extend({
    actionHistory: DS.hasMany('action-history'),
    ...
});

// models/action-history.js
export default DS.Model.extend({
    user: DS.belongsTo('user'),
    ...
});

Я пробовал много способов , чтобы убедиться , что он загружен, post.load('user.actionHistory'), post.get('user').reload({ include: 'action-history'}), но ничего не работает.

Что-то не так с моей установкой или с тем, как я пытаюсь найти отношения?

ember.js,ember-data,

0

Ответов: 1


1

Как отметил Гаурав в комментарии, findRecordфункция ember-datas вернет обещание, которое необходимо решить в первую очередь. После того, как он разрешится, вы сможете получить пользователя. Например, следующее будет возвращать обещание в качестве вашей модели, которая решит историю действий пользователей.

// routes/comments.js
export default Route.extend({
    model() {
        return this.modelFor('application').then(p => p.get('user.actionHistory'));
    }
});

Обратите внимание, что ваш контроллер комментариев / шаблон не получит обещание от вашего крюка модели, поскольку ember будет ждать его разрешения в первую очередь.

ember.js, человеко-данных,
Похожие вопросы