ember-отношения данных не работает

Пытаясь выяснить, как использовать отношения и это просто не работает.

// Data
{
    "apps": {
        "-AFCH5-Kvkc_nfQxnpZ8": {
            "name": "Leap Day",
            "playLink": "https://play.google.com/store/apps/details?id=com.nitrome.leapday",
            "price": "0.00",
            "like": 0,
            "show": "-SFCH5-Kvkc_nfQxnpZ8",
            "provider": "-PFCH5-Kvkc_nfQxnpZ8",
            "imageUrl": "https://www.google.com/url?q=https://lh3.googleusercontent.com/5oR-jbrmKNWqdWQnwrDjPD2PJUJekGK_BUAQOjKD3GuJRTk2MLVzuU2HJ0wyY2BYPsdS%3Dw300-rw&sa=D&ust=1464126095843000&usg=AFQjCNH0RSH6_0bA_EUqnZaldtUxCH1fAw"
        },
        "-AFCH5-Kvkc_nfQxnpZ9": {
            "name": "Gangfort",
            "playLink": "https://www.google.com/url?q=https://play.google.com/store/apps/details?id%3Dcom.gangfort.game.android&sa=D&ust=1464126095844000&usg=AFQjCNFSTZ1p_uBvIHYw97c29XwJU3gEjw",
            "price": "1.99",
            "like": 0,
            "show": "-SFCH5-Kvkc_nfQxnpZ8",
            "provider": "-PFCH5-Kvkc_nfQxnpZ8",
            "imageUrl": "https://www.google.com/url?q=https://lh3.googleusercontent.com/DV5mFhDQ2ADEbiF0S4cxL313JDqRazy9et7Etky5WtH7gxsm9DvbHhb52N0MH1swgfzR%3Dw300-rw&sa=D&ust=1464126095844000&usg=AFQjCNEymzxjrdN8wwL4qN40w5i8i9MlPw"
        }
    },
    "shows": {
        "-SFCH5-Kvkc_nfQxnpZ8": {
            "number": 432,
            "name": "Google I/O Secrets Revealed",
            "date": "05/22/2016",
            "app": ["-AFCH5-Kvkc_nfQxnpZ8", "-AFCH5-Kvkc_nfQxnpZ9"],
            "url": "http://podnutz.com/aaa432/"
        }
    },
    "providers": {
        "-PFCH5-Kvkc_nfQxnpZ8": {
            "firstName": "Steve",
            "lastName": "McLaughlin",
            "nick": "D2d",
            "app": ["-AFCH5-Kvkc_nfQxnpZ8", "-AFCH5-Kvkc_nfQxnpZ9"]
        }
    }
}

Вот модель приложения
импорт модели из ’ember-data / model’;
импорт attr из ’ember-data/attr’;
импорт { belongsTo } из ’ember-data / Relations’;

export default Model.extend({
  name: attr('string'),
  playLink: attr('string'),
  price: attr('string'),
  like: attr('number'),
  show: belongsTo('show', {
    async: true
  }),
  provider: belongsTo('provider', {
    async: true
  }),
  imageUrl: attr('string')
});

Вот модель шоу

import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import { hasMany } from 'ember-data/relationships';

export default Model.extend({
  number: attr('number'),
  name: attr('string'),
  date: attr('date'),
  apps: hasMany('app'),
  url: attr('string')
});

Вот мой маршрут

import Ember from 'ember';

export default Ember.Route.extend({
  model() {
    return this.store.findAll('app');
  }
});

Вот как выглядит консоль ember

Консоль Ember

Таким образом, проблема заключается в том, когда я пытаюсь получить доступ к show object в моем шаблоне, его не придумать

{{#each model as |show|}}
    {{app.show.name}}
{{/each}}

Обновить

Из вида разметки кажется, что здесь что-то работает

Введите описание изображения здесь

Вот консоль, когда я регистрирую приложение.показывать

Введите описание изображения здесь

3 ответа

  1. вы не повторяете каждую модель приложения в шаблоне.
    так и должно быть

    {{#each model as |app|}}
        {{app.show.name}}
    {{/each}}
    

    ваш каждый цикл похож на это{{#each model as |show|}}

  2. Попробовать это:

    {{#each model as |app|}}
      {{#if app.show}}
       {{app.show.name}}
      {{/if}}
    {{else}}
       Loading apps...
    {{/each}}
    

    Здесь я бы рекомендовал использовать преимущества Ember-promise helpers, так как отношение между приложением и шоу асинхронно:

    {{#each model as |app}}
      {{#if (await app.show)}}
       {{get (await app.show) 'name'}}
      {{/if}}
    {{else}}
       Loading apps...
    {{/each}}
    
  3. Похожеapps: hasMany('app'), что ссылка в вашей showмодели перезаписывает ваши отношения, определенные в модели shows.