Ember Data 无法识别 JSON 响应中的 ID(与继承相关)



在过去的几个小时里,我一直在试图解决这个问题,我认为最好在这一点上寻求一些帮助。

我正在创建一个新记录(例如,一个新的ProducerObjectiveOutcome记录)。在我的 Ember 应用程序将数据从表单发布到我的 Rails API 后,会引发以下错误:

断言失败:结果记录已保存到服务器,但响应没有 id,并且客户端未设置 id。记录必须具有 ID。请在保存记录之前或在规范化响应时更新服务器响应以在响应中提供 id,或在客户端生成 id。

奇怪的是,我的 API 返回了一个带有 ID 的 JSON 响应(见下文)。

{
"producer_objective_outcome": {
"id":27,
"type":"ProducerObjectiveOutcome",
"title":"New outcome",
"owner": {
"id":6
}
}
}

正如您可能已经拿起的那样,ProducerObjectiveOutcomeOutcome的子类。

在我的 Ember 应用程序和 Rails API 中,我设置了从Outcome继承ProducerObjectiveOutcome。 在我的 Ember 应用程序中,特别是模型的样子:

// app/models/producer-objective-outcome.js
import Outcome from "./outcome";
export default Outcome.extend({
});

这里没有什么花哨的事情发生——我认为这一切都很简单——但出于某种原因,这个错误出现了。我希望你们中的一位了不起的人可以帮助我解决这个问题!

提前感谢!

对于任何感兴趣的人,我通过将 JSON 响应的根节点的名称更改为outcome而不是将其更改为producer_objective_outcome来解决此问题。

在我之前的解释中可能有帮助的是,ProducerObjectiveOutcome记录是在以下路由创建的:producer/objective/:id/outcome/new

正如我刚刚发现的那样,此 URI 的关键部分是.../outcome/...部分。我没有进行过其他测试,但考虑到 Ember 中的约定,我怀疑如果该 URI.../producer-objective-outcome/...那么一切都会很笨拙。

TL;DR:JSON 有效负载中的名称应与路由匹配。

最新更新