所以我的设置就像这样
category
posts: hasMany {async: true}
现在我有很多很多类别。
我从服务器请求所有类别。在响应中,我不包含posts
字段,因为我需要在服务器中查询与该类别相关的帖子的所有ID。为了得到我的回应:
categories: [{ other fields...., posts: [1,2,4,54,5]}, .... ]
无论如何,我有另一条针对特定类别的路线。为此,我查询帖子并将其包含在响应中。
但是,如果我来自列出所有类别的路线。该特定类别已加载到商店中,因此它不会查询它。问题是它没有帖子数据。
如何检查响应中是否存在字段,然后进行模型刷新以获取正确的数据。
答案 0 :(得分:0)
由于您的hasMany关系为async
,因此在您发出/posts
或尝试呈现类别之前,Ember数据不会向category.get('posts')
个端点查询相关帖子。
这样Ember Data处理剩下的工作。
每次有必要时posts
字段每当你有帖子ID
store.update('category', {id: categoryID, posts: [postIDs]})`
检查posts
关联是否为空
category.get('posts').then(function(posts){
posts.get('length') > 0;
});
并重新加载
category.get('posts').then(function(posts){
if(posts.get('length') > 0){
store.find('category', category.get('id'));
}
});