【发布时间】:2014-07-23 21:01:09
【问题描述】:
我正在以这种格式返回 JSON:
{
"status": "success",
"data": {
"debtor": {
"debtor_id": 1301,
"key": value,
"key": value,
"key": value
}
}
}
不知何故,我的RESTAdapter 需要从 JSON 的“债务人”部分提供我的债务人模型属性。
目前,我从服务器成功回调,但控制台错误提示 Ember 找不到“状态”模型。我在Ember Model Guide中找不到这样嵌套的JSON怎么处理?
到目前为止,我已经能够做一些简单的事情,比如扩展RESTSerializer 以接受“debtor_id”作为主键,并删除 GET URL 请求的复数形式......但我找不到任何了解深度嵌套 JSON 属性的明确指南。
为了清晰起见扩展问题细节:
我需要以某种方式更改适配器/序列化程序的默认行为,因为这个 JSON 约定被用于我的 Ember 应用程序以外的许多目的。
到目前为止我的解决方案:
与一位朋友一起,我们得以剖析"extract API"(感谢@lame_coder 指点我)
我们想出了一种根据具体情况扩展序列化程序的方法,但不确定它是否真的是“Ember Approved”解决方案...
// app/serializers/debtor.js
export default DS.RESTSerializer.extend({
primaryKey: "debtor_id",
extract: function(store, type, payload, id, requestType) {
payload.data.debtor.id = payload.data.debtor.debtor_id;
return payload.data.debtor;
}
});
似乎即使我能够为 requesting 数据更改我的 primaryKey,Ember 仍在尝试使用硬编码 ID 来识别正确的记录(而不是我已设置)。所以我们只是重写了extract 方法来强制Ember 寻找我想要的正确主键。
同样,这对我目前有效,但我还没有看到这种变化是否会导致任何问题......
如果有人有任何见解,我仍然会寻找可能更稳定/可重用/面向未来/等的不同解决方案?
【问题讨论】:
标签: json ember.js ember-data