Emberjs: лучший способ обрабатывать отношения, не встроенные в оригинальный Json

У меня есть пользователь JSON API:

{
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "Sincere@april.biz",
    "address": {
      "street": "Kulas Light",
      "suite": "Apt. 556",
      "city": "Gwenborough",
      "zipcode": "92998-3874",
      "geo": {
        "lat": "-37.3159",
        "lng": "81.1496"
      }
    }
}

и пост JSON API:

{
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
  }

Я также создал связанные модели в Ember Data: app/models/user.js:

export default Model.extend({
  name: attr('string'),
  username: attr('string'),
  email: attr('string'),
  posts: hasMany('post', { async: true })
});

приложение / модели /post.js:

export default Model.extend({
  title: attr('string'),
  body: attr('string'),
  userId: belongsTo('user')
});

Моя проблема в том, что я не могу получить доступ к сообщениям пользователя из пользовательского объекта в ember, то есть: user.posts пуст.

Каков наилучший способ справиться с этим? Требуются ли для Ember Data отношения в JSON? Или я могу вызывать посты отдельно от магазина из компонента (у меня есть компонент для отображения всех постов пользователя)?

1 ответ

Данные Ember не требуют их встраивания, если вы установите async в true, как вы это сделали, вы сможете получить доступ к публикациям в шаблоне следующим образом:

// template.hbs
{{#each user.posts as |post|}}
  {{post.title}}
{{/each}}

или где-нибудь еще в ember с javascript, например так:

this.get('store')
.findRecord('user',1)
.then((user)=> {
    return user.get('posts')
})
.then((posts)=> {
    console.log(posts)
    //use posts here
})
Другие вопросы по тегам