如果hasMany不存在,则刷新模型

时间:2014-07-12 19:01:10

标签: javascript ember.js ember-data

信息

所以我的设置就像这样

category 
    posts: hasMany {async: true}

现在我有很多很多类别。

我从服务器请求所有类别。在响应中,我不包含posts字段,因为我需要在服务器中查询与该类别相关的帖子的所有ID。为了得到我的回应:

categories: [{ other fields...., posts: [1,2,4,54,5]}, .... ]

无论如何,我有另一条针对特定类别的路线。为此,我查询帖子并将其包含在响应中。

但是,如果我来自列出所有类别的路线。该特定类别已加载到商店中,因此它不会查询它。问题是它没有帖子数据。

问题

如何检查响应中是否存在字段,然后进行模型刷新以获取正确的数据。

1 个答案:

答案 0 :(得分:0)

由于您的hasMany关系为async,因此在您发出/posts或尝试呈现类别之前,Ember数据不会向category.get('posts')个端点查询相关帖子。

始终包含帖子ID

这样Ember Data处理剩下的工作。

每次有必要时

合并posts字段

查看Store#update

每当你有帖子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'));
  }
});