Ember Data findAll() causing "TypeError: Cannot read property 'type' of undefined"
Ember Data findAll() causing "TypeError: Cannot read property 'type' of undefined"
将我的第一个模型连接到我的后端并在调用 Ember Data 的 findAll()
时出现以下错误
TypeError: Cannot read property 'type' of undefined
路线,
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 使用的数据是 JSON API 所以您的数据应该如下所示,
{
"data": {
"id": "1",
"type": "restaurants,
"attributes": {
"name": "Name"
}
}
}
使 Ember 数据满足您的需求,而不改变后端生成数据的格式。您可以添加自己的适配器,用于将您的 Ember 数据请求传输到正确的请求。
在下面的 link 阅读有关适配器的更多信息,
https://guides.emberjs.com/v2.6.0/models/customizing-adapters/
您的 JSON 文件格式类似于 REST API 响应,但默认情况下 Ember 使用 JSONAPI 适配器。
首先修复JSON,它应该return一个数组:
[{
"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({
})
阅读更多:
将我的第一个模型连接到我的后端并在调用 Ember Data 的 findAll()
时出现以下错误TypeError: Cannot read property 'type' of undefined
路线,
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 使用的数据是 JSON API 所以您的数据应该如下所示,
{
"data": {
"id": "1",
"type": "restaurants,
"attributes": {
"name": "Name"
}
}
}
使 Ember 数据满足您的需求,而不改变后端生成数据的格式。您可以添加自己的适配器,用于将您的 Ember 数据请求传输到正确的请求。
在下面的 link 阅读有关适配器的更多信息,
https://guides.emberjs.com/v2.6.0/models/customizing-adapters/
您的 JSON 文件格式类似于 REST API 响应,但默认情况下 Ember 使用 JSONAPI 适配器。
首先修复JSON,它应该return一个数组:
[{
"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({
})
阅读更多: