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
})