我有两个异步模型:
App.Posts = DS.Model.extend({
'content': attr('string'),
'comments': DS.hasMany('comments', {async: true}),
});
App.Comments = DS.Model.extend({
'body': DS.attr('string'),
'postId': DS.belongsTo('posts', {async: true})
});
通过PostController我尝试通过动作加载评论onClick:
App.PostController = Ember.ArrayController.extend({
loadComments: function(post_id) {
this.store.find('comments', post_id);
}
});
(或许还有更好的方法吗?)
请求和API响应是正确的(请参阅下面的API响应),但只呈现一条注释,然后Ember会抛出错误:
TypeError: Cannot read property 'postId' of undefined
在余烬控制台>数据选项卡注释模型中有一条注释,但注释模型中还有一个post元素,注释属性设置为undefined。这可以解释为什么Ember无法阅读postId属性,因为它不是评论。为什么Ember将帖子推送到评论模型中,只将一个而不是3个评论推送到模型中?
API响应
{
"comments": [
{
"id": 2,
"postId": 31152,
"body": "Lorem ipsum dolor sit amet, consetetur",
},
{
"id": 2,
"postId": 31152,
"body": "asdasd",
},
{
"id": 2,
"postId": 31152,
"body": "asd asd sd",
}
]
}
答案 0 :(得分:0)
这是一个在黑暗中的轻微镜头,我通常把它作为评论,但它有点大。您可以尝试将所有模型引用更改为单数。这是Ember Data模型的正确模式。
App.Post = DS.Model.extend({
'content': attr('string'),
'comments': DS.hasMany('comment', {async: true}),
});
App.Comment = DS.Model.extend({
'body': DS.attr('string'),
'postId': DS.belongsTo('post', {async: true})
});
this.store.find('comment', post_id);
现在我写这篇文章,我可能会看到另一个问题。如果您通过post_id查询评论(假装它是7
),那么Ember Data预计会返回一条记录,而不是一组记录。因此,它可能会查看评论集,并认为它是一个单一的记录,这只是夸大了它的逻辑。