我目前正在尝试使用 ember-django-adapter 设置 ember 以与 Django 的 REST 框架进行交互。
这完美无瑕。但是自从我开始使用 djangorestframework-gis 后,ember 就无法再处理响应了。
除了: https ://gist.github.com/cspanring/5114078 之外,我还没有找到任何人使用 ember 构建 geoJSON但这似乎不是正确的方法,因为我不想更改数据模型?
这是 api 响应:
{
"type": "FeatureCollection",
"features": [
{
"id": 1,
"type": "Feature",
"geometry": {
"coordinates": [
9.84375,
53.665466308594
],
"type": "Point"
},
"properties": {
"date_created": "2014-10-05T20:08:43.565Z",
"body": "Hi",
"author": 1,
"expired": false,
"anonymous": false,
"input_device": 1,
"image": "",
"lat": 0.0,
"lng": 0.0
}
}
]
}
虽然 ember 期望类似:
[{"id":1,
"date_created":"2014-10-05T20:08:43.565Z",
"body":"Hi",
"author":1,
"expired":false,
"anonymous":false,
"input_device":1,
"image":"",
"lat":0,
"lng":0
}
]
我对此的看法是编写我自己的序列化器:
import Ember from "ember";
import DS from "ember-data";
export default DS.DjangoRESTSerializer.extend({
extractArray: function(store, type, payload) {
console.log(payload);
//console.log(JSON.stringify(payload));
var features = payload["features"];
var nPayload = [];
for (var i = features.length - 1; i >= 0; i--) {
var message = features[i];
var nmessage = {"id": message.id};
for(var entry in message.properties){
var props = message.properties;
if (message.properties.hasOwnProperty(entry)) {
var obj = {}
nmessage[entry]=props[entry];
}
}
nPayload.push(nmessage);
};
console.log(nPayload); //prints in the format above
this._super(store, type, nPayload);
},
})
但我收到以下错误:
The response from a findAll must be an Array, not undefined
我在这里想念什么?或者这是错误的方法?有没有人试图让这个工作?
另一种方法是在服务器端处理这个问题,并简单地输出一个常规的 restframework 响应并在后端设置 lat 和 long 。