在状态root.deleted.inFlight中尝试处理<appname @ model:post :: ember622:17>上的事件`得动数据'

lon*_*ger 2 node.js ember.js

我有一个基本的crud应用程序的博客帖子.上面的错误显示在控制台.我删除帖子.但是帖子从数据库中删除.我搜索了类似的问题,没有一个答案解决了问题.我使用用于crud操作的JSONAPIAdapter.

我检查了ember检查器的标志,isDeleted的标志设置为true .FYI ,ember数据中显示的记录数是精确的.

deletePost:function(id){
  var self = this;
  this.get('store').find('post', id)
    .then(post => post.destroyRecord())
      .then(() => self.transitionToRoute('posts'));
}
Run Code Online (Sandbox Code Playgroud)

我使用nodejs作为后端,mysql作为db.删除记录后,我发送了这样的响应 res.status(204).end();

Ember CLI版本2.6.3

在此输入图像描述

图像中的上述细节是来自服务器的响应. 在此输入图像描述

小智 6

我很确定这个问题是由ember数据的后台重新加载引起的.即使在删除请求之前触发了对api的查找请求,查找请求也会在您触发删除请求后解析.要禁用后台重新加载并强制执行api呼叫,您可以{reload: true}转到findRecord()呼叫.这将确保在您触发删除请求之前解析请求已解析.

像这样:

deletePost(id) {
  this.get('store').findRecord('post', id, { reload: true }).then((post) => { 
    return post.destroyRecord();
  }).then(() => {
    self.transitionToRoute('posts');
  });
}
Run Code Online (Sandbox Code Playgroud)

您可以findRecord在这里阅读更多信息:http://emberjs.com/api/data/classes/DS.Store.html#method_findRecord

将来,我建议不要使用箭头功能速记,因为即使你不想返回值,它总会返回.