Ember.js 余烬数据+;JSONAPI-错误:适配器拒绝了提交,因为它无效

Ember.js 余烬数据+;JSONAPI-错误:适配器拒绝了提交,因为它无效,ember.js,ember-data,json-api,Ember.js,Ember Data,Json Api,我试图通过POST请求将无效数据提交给一个基于JSONAPI的、带有Ember data 2.10的API API使用422代码和响应中的此有效负载正确响应(注意,这些不是“正常”JSONAPI有效负载响应): 错误似乎是加载到模型中基本正常,但我在控制台中得到了这个错误: ember.debug.js:19160 Error: The adapter rejected the commit because it was invalid at ErrorClass.EmberError (e

我试图通过
POST
请求将无效数据提交给一个基于JSONAPI的、带有Ember data 2.10的API

API使用
422
代码和响应中的此有效负载正确响应(注意,这些不是“正常”JSONAPI有效负载响应):

错误似乎是加载到模型中基本正常,但我在控制台中得到了这个错误:

ember.debug.js:19160 Error: The adapter rejected the commit because it was invalid
  at ErrorClass.EmberError (ember.debug.js:19083)
  at ErrorClass.AdapterError (errors.js:23)
  at ErrorClass (errors.js:49)
  at Class.handleResponse (rest.js:821)
  at Class.handleResponse (data-adapter-mixin.js:100)
  at Class.superWrapper [as handleResponse] (ember.debug.js:24805)
  at ajaxError (rest.js:1342)
  at Class.hash.error (rest.js:916)
  at fire (jquery.js:3305)
  at Object.fireWith [as rejectWith] (jquery.js:3435)
是什么导致了这个错误?服务器返回的JSON负载是否有问题?最近发生变化的一件事是引入了指向
/data/relationships/layout
的指针;余烬的数据是不是因为这个而窒息了

我还可能注意到,通过
补丁
请求提交类似的错误数据不会触发控制台中的此错误

主要问题是,这导致验收测试失败,而我似乎找不到解决办法。能够在应用程序中测试这种行为会很好,但我现在只需要将其注释掉


在升级到2.10之前,我也在Ember Data 2.7上尝试过这个方法,看看是否可以解决这个问题。两个版本都出现相同的错误。

由于您的应用程序使用默认适配器,请确保在生成响应时遵循
JSON:API
约定


中提供了一些指南,您的json似乎不在format@MilkyWayJoe是什么具体导致它不符合JSON API 1.0?似乎格式不正确。您必须让rails发送类似于
“data”:[{“type”:“error”,“id”:“title”,“attributes”:{“title”:“title不能为空”,“code”:“100”},{“type”:“error”…
等等..注意到了结构的差异吗?@MilkyWayJoe我遇到的问题是错误对象,它们是不同的动物。另外,适配器不应该正确地拒绝无效的帖子吗?你确定它不仅仅告诉你它正确地完成了它的工作吗?你在非开发环境中得到了什么?你的答案是not有帮助。我在问题中发布了有效负载。具体有什么问题?您的错误有效负载是正确的。我认为您走的是正确的道路。这是ember的正常行为。ember数据让您知道模型没有成功保存,因为服务器以422响应
ember.debug.js:19160 Error: The adapter rejected the commit because it was invalid
  at ErrorClass.EmberError (ember.debug.js:19083)
  at ErrorClass.AdapterError (errors.js:23)
  at ErrorClass (errors.js:49)
  at Class.handleResponse (rest.js:821)
  at Class.handleResponse (data-adapter-mixin.js:100)
  at Class.superWrapper [as handleResponse] (ember.debug.js:24805)
  at ajaxError (rest.js:1342)
  at Class.hash.error (rest.js:916)
  at fire (jquery.js:3305)
  at Object.fireWith [as rejectWith] (jquery.js:3435)