我对EmberJS很陌生,不幸的是我必须处理不包含根或ids的JSON,而我似乎无法找到任何明确的方法来实现我的目标。 ;我试图这样做,这只是为了清理响应。
我认为我需要使用ember序列化程序来执行此操作。
这是我目前从api/locations
获得的内容:
[
{
"uri": "/location/1",
"name": "ATLANTA"
},
{
"uri": "/location/2",
"name": "NORTH VIRGINIA"
}
]
我认为我需要它看起来像这样,带有root和id' s:
{
"locations":[
{
"id":"1",
"uri":"/location/1",
"name":"ATLANTA"
},
{
"id":"2",
"uri":"/location/2",
"name":"NORTH VIRGINIA"
}
]
}
我在app/serializers/location.js
import DS from 'ember-data';
export default DS.JSONSerializer.extend({
// how can I manufacture an id here, say with index
// how to I assign it to a root called "locations"
});
仅仅通过包含这个JSONSerializer,我确实在商店中得到了一条记录,但它只是一个,我认为这是因为他们没有ids,否则两个条目都会出现。
我需要帮助以及如何开始按摩这些数据的示例。我尝试的例子没有做任何事情。
答案 0 :(得分:1)
似乎JSONSerializer修复了我提到的root问题,但我能够通过在序列化程序上试用可用的方法来解决我的id问题,直到我找到了有效的东西。我的最终解决方案如下:
export default DS.JSONSerializer.extend({
normalize: function(typeClass, hash) {
hash['id'] = parseFloat(hash.uri.match(/\d+/g))
return this._super.apply(this, arguments);
}
});
很简单,但是,哇,我找不到一个展示如何做这样的事情的例子。