ember-data:加载hasMany关系中的记录
ember-data: loading records in hasMany relationship
我正在尝试编写允许登录用户将产品添加到 "saved item" 列表的功能。型号是:
//saveditem.js model
export default DS.Model.extend({
user: belongsTo('user'),
product: belongsTo('product', { async: true }),
dateAdded: attr('string')
});
在显示已保存项目的saveditems
路由上,model()
钩子是:
model() {
return this.get("store").findAll('saveditem');
}
api 正在返回仅包含 ID 的记录:
{
"dateAdded": "Mon, 11 Dec 2017 20:59:10 GMT",
"id": 4458,
"product": 4458,
"user": "me"
},
{
"dateAdded": "Sun, 10 Dec 2017 10:26:02 GMT",
"id": 3657,
"product": 3657,
"user": "me"
}
...
如何使用 ID 获取 hasMany 关系来加载实际产品?
我想通了(由 arne.b 的问题提示)。设置正确,但我调用项目的方式不正确。
我在模板中这样做:
{{#each model as |result|}}
<div>
{{result.productName}}
</div>
{{/each}}
它打印了空的 div,因为它循环遍历了我的 saveditem
记录,但关系没有解决,因为我没有调用产品对象本身。正确方法:
{{#each model as |result|}}
<div>
{{result.product.productName}}
</div>
{{/each}}
我还需要在模型上设置async: true
:
export default DS.Model.extend({
user: belongsTo('user'),
product: belongsTo('product', { async: true }),
dateAdded: attr('string')
});
我正在尝试编写允许登录用户将产品添加到 "saved item" 列表的功能。型号是:
//saveditem.js model
export default DS.Model.extend({
user: belongsTo('user'),
product: belongsTo('product', { async: true }),
dateAdded: attr('string')
});
在显示已保存项目的saveditems
路由上,model()
钩子是:
model() {
return this.get("store").findAll('saveditem');
}
api 正在返回仅包含 ID 的记录:
{
"dateAdded": "Mon, 11 Dec 2017 20:59:10 GMT",
"id": 4458,
"product": 4458,
"user": "me"
},
{
"dateAdded": "Sun, 10 Dec 2017 10:26:02 GMT",
"id": 3657,
"product": 3657,
"user": "me"
}
...
如何使用 ID 获取 hasMany 关系来加载实际产品?
我想通了(由 arne.b 的问题提示)。设置正确,但我调用项目的方式不正确。
我在模板中这样做:
{{#each model as |result|}}
<div>
{{result.productName}}
</div>
{{/each}}
它打印了空的 div,因为它循环遍历了我的 saveditem
记录,但关系没有解决,因为我没有调用产品对象本身。正确方法:
{{#each model as |result|}}
<div>
{{result.product.productName}}
</div>
{{/each}}
我还需要在模型上设置async: true
:
export default DS.Model.extend({
user: belongsTo('user'),
product: belongsTo('product', { async: true }),
dateAdded: attr('string')
});