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

Model refresh if hasMany does not exist

本文关键字:刷新 模型 hasMany 不存在 如果      更新时间:2023-09-26

信息

所以我设置了类似的东西

category 
    posts: hasMany {async: true}

现在我有很多类别。

我从服务器请求所有类别。在响应中,我不包括posts字段,因为我需要向服务器查询与该类别相关的帖子的所有id。为了让我的反应变成这样:

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

不管怎样,我有另一条特定类别的路线。为此,我查询了帖子,并将其包含在回复中。

然而,如果我来自列出所有类别的路线。那个特定类别已经加载到存储中,所以它不会查询它。问题是它没有帖子数据。

问题

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

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

始终包括帖子ID

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