Javascript 如果hasMany不存在,则刷新模型 问询处

Javascript 如果hasMany不存在,则刷新模型 问询处,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,所以我有这样的设置 category posts: hasMany {async: true} 现在我有很多种类 我从服务器请求所有类别。在响应中,我没有包含posts字段,因为我需要向服务器查询与该类别相关的所有posts ID。要让我的回答变成这样: 类别:[{其他字段….,帖子:[1,2,4,54,5]},…] 无论如何,我有另一条路线是针对特定类别的。为此,我查询了帖子,并将其包含在回复中 但是,如果我来自列出所有类别的路线。该特定类别已加载到存储中,因此它不会查询该类别。问

所以我有这样的设置

category 
    posts: hasMany {async: true}
现在我有很多种类

我从服务器请求所有类别。在响应中,我没有包含
posts
字段,因为我需要向服务器查询与该类别相关的所有posts ID。要让我的回答变成这样:

类别:[{其他字段….,帖子:[1,2,4,54,5]},…]

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

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

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

由于您的hasMany关系是异步的,所以在发出
类别。获取('posts')
或尝试呈现类别之前,Ember data不会查询相关帖子的
/posts
端点

始终包括帖子ID 余烬数据以这种方式处理其余的数据

必要时合并
posts
字段 看

只要你有身份证

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

我猜您实际上不想检查字段作为响应。你想知道你是否有
帖子
,对吗?我不能总是包含帖子ID。当我查询所有类别时,我对其进行了测试,包括post ID需要327ms等待到4s等待。这并不理想。当我执行store.update时,我可以只向posts字段提供post id数组?另外,如果没有post id,category.get('posts')不会返回错误?请查看Store#update文档,它希望id和有效负载与该id中的字段合并。+
category.get('posts')
仅在有效负载上的post id为空数组时返回空数组。