我用来获取数据的REST API并没有按照Ember.js的预期提供正确的JSON。我们的数据中没有id值。
[{"objectID":"340907","owner":"Lokesh"},{"objectID":"340908","owner":"Cherukuri"}]
所以,我创建了一个序列化器:
串行器/ baddata.js
import DS from 'ember-data';
export default DS.JSONSerializer.extend({
primaryKey: 'objectID'
});
适配器/ baddata.js
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
host: 'http://localhost:8080',
buildURL : function(modelName, id) {
return this.host + "/baddata/trains/"+ id;
}
});
模型/ baddata.js
import DS from 'ember-data';
export default DS.Model.extend({
owner: DS.attr('string')
});
这并没有解决问题。有人可以纠正我的错误吗?
答案 0 :(得分:1)
我正在使用mongo,在您的示例中,我看到您使用了ApplicationSerializer。我认为您需要使用以下
如果你使用JSONSerializer那么
import DS from 'ember-data';
export default DS.JSONSerializer.extend({
primaryKey: 'objectID'
});
如果您使用REST Serializer
import DS from 'ember-data';
export default DS. RESTSerializer.extend({
primaryKey: 'objectID'
});
我尝试搜索ApplicationSerializer类,但在doc下没有提到。这对我和mongo有用,我用它来改变_id
希望有所帮助
答案 1 :(得分:0)
您希望使用DS.RESTSerializer
并覆盖normalizeResponse
将您的数据转换为:
{ baddata: { "id":"340907", "owner":"Lokesh" } }
将objectID
转换为id
只会让您的生活更轻松。您也可以,因为您已经需要覆盖normalizeResponse
来格式化有效负载。
这假设您一次只提取一条记录。如果您获取多条记录,则需要
{
baddatas: [
{ "id":"340907", "owner":"Lokesh" },
{ "id":"340908","owner":"Cherukuri" }
]
}