Ember.js 余烬数据findAll()导致;TypeError:无法读取属性';类型';“未定义”的定义;
将第一个模型连接到后端,调用Ember Data的findAll()时出现以下错误 路线,Ember.js 余烬数据findAll()导致;TypeError:无法读取属性';类型';“未定义”的定义;,ember.js,ember-data,Ember.js,Ember Data,将第一个模型连接到后端,调用Ember Data的findAll()时出现以下错误 路线, import Ember from 'ember'; export default Ember.Route.extend({ model() { this.store.findAll('restaurant'); } }); 模型 import DS from 'ember-data'; export default DS.Model.extend({ nam
import Ember from 'ember';
export default Ember.Route.extend({
model() {
this.store.findAll('restaurant');
}
});
模型
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr()
});
我可以看到Ember正在访问我的本地服务器,并从正确的url返回格式正确的JSON
{
"restaurants": {
"id":1,
"name":"Restaurant Name"
}
}
我也看到过类似的问题,但它通常与格式不正确的JSON有关。使用的默认数据格式Ember data是JSON API,因此您的数据应该如下所示:
{
"data": {
"id": "1",
"type": "restaurants,
"attributes": {
"name": "Name"
}
}
}
使余烬数据符合您的需要,而不改变后端如何生成数据的格式。您可以添加自己的适配器,该适配器用于将余烬数据的请求传输到正确的请求
在下面的链接中阅读有关适配器的更多信息
使用的默认数据格式Ember data是JSON API,因此您的数据应该如下所示:
{
"data": {
"id": "1",
"type": "restaurants,
"attributes": {
"name": "Name"
}
}
}
使余烬数据符合您的需要,而不改变后端如何生成数据的格式。您可以添加自己的适配器,该适配器用于将余烬数据的请求传输到正确的请求
在下面的链接中阅读有关适配器的更多信息
JSON文件的格式类似于RESTAPI响应,但默认情况下,Ember使用JSONAPIAdapter 首先修复JSON,它应该返回一个数组:
[{
"id":1,
"name":"Restaurant Name"
}]
然后更改适配器并配置序列化程序:
// in app/adapters/application.js
import Ember from 'ember';
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
})
// in app/serializers/application.js
import Ember from 'ember';
import DS from 'ember-data';
export default DS.JSONSerializer.extend({
})
阅读更多:
JSON文件的格式类似于RESTAPI响应,但默认情况下,Ember使用JSONAPIAdapter 首先修复JSON,它应该返回一个数组:
[{
"id":1,
"name":"Restaurant Name"
}]
然后更改适配器并配置序列化程序:
// in app/adapters/application.js
import Ember from 'ember';
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
})
// in app/serializers/application.js
import Ember from 'ember';
import DS from 'ember-data';
export default DS.JSONSerializer.extend({
})
阅读更多:
JSON格式正确,但序列化程序可能需要restauranst:
{“restaurants:[{}]}数组
onfindAll
我已经尝试过了,但仍然不起作用。另外,文档中说,您可以有一个单一的对象,默认情况下,您使用JSONAPIAdapter和序列化程序。如果您想要这个Json,您应该手动选择使用正确的适配器并序列化。我正在尝试按照Ember预期的方式对我的Json进行反序列化错误。你是说我不是吗?你能解释一下LuxJSON的格式是否正确,但序列化程序可能需要一个restauranst数组:{“restaurants:[{}]}
在findAll
上,我已经尝试过了,但仍然不起作用。文档还说,您可以拥有一个单一的对象,默认情况下使用JSONAPIAdapter和序列化程序。如果您想要这个Json,您应该手动选择使用正确的适配器,并且我正在尝试按照Ember默认预期的方式格式化我的Json。你是说我不是?请考虑为application.js扩展DS.RESTSerializer。考虑为application.js扩展DS.RESTSerializer。您是对的。不知何故,我发现了关于ember在这里期望的格式的错误文档。我想这是一个可选的适配器。我很好奇为什么他们甚至支持这个适配器。你是对的。不知何故,我发现了关于ember在这里期望的格式的错误文档。我想这是一个可选的适配器。我很好奇为什么他们甚至支持这个适配器。