Ember.js 余烬数据findAll()导致;TypeError:无法读取属性';类型';“未定义”的定义;

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

将第一个模型连接到后端,调用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({
    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:[{}]}数组
on
findAll
我已经尝试过了,但仍然不起作用。另外,文档中说,您可以有一个单一的对象,默认情况下,您使用JSONAPIAdapter和序列化程序。如果您想要这个Json,您应该手动选择使用正确的适配器并序列化。我正在尝试按照Ember预期的方式对我的Json进行反序列化错误。你是说我不是吗?你能解释一下LuxJSON的格式是否正确,但序列化程序可能需要一个restauranst数组:
{“restaurants:[{}]}
findAll
上,我已经尝试过了,但仍然不起作用。文档还说,您可以拥有一个单一的对象,默认情况下使用JSONAPIAdapter和序列化程序。如果您想要这个Json,您应该手动选择使用正确的适配器,并且我正在尝试按照Ember默认预期的方式格式化我的Json。你是说我不是?请考虑为application.js扩展DS.RESTSerializer。考虑为application.js扩展DS.RESTSerializer。您是对的。不知何故,我发现了关于ember在这里期望的格式的错误文档。我想这是一个可选的适配器。我很好奇为什么他们甚至支持这个适配器。你是对的。不知何故,我发现了关于ember在这里期望的格式的错误文档。我想这是一个可选的适配器。我很好奇为什么他们甚至支持这个适配器。