“断言失败:来自findAll的响应必须是一个数组,而不是未定义”

时间:2014-04-04 13:32:28

标签: javascript json ember.js ember-data

我试图让Emberjs与fortunejs后端合作。到目前为止,我在Ember中创建了一个非常简单的页面,它应该显示所有“客户”实体,这些实体可以与LSadapter一起使用。

当我的应用加载概述页面时,它会向http://localhost:1337/customers发出GET请求,并且财富回复:

{
"customers": [
{
  "id": "YIR17juOFkaWBFhl",
  "name": "PIm",
  "phone": 132,
  "fax": 123,
  "chamberOfCommerceNumber": 123,
  "website": "123.nl"
},
{
  "id": "gUGIoHvwI8mwVTgE",
  "name": "Marco",
  "phone": 123,
  "fax": 123,
  "chamberOfCommerceNumber": 123,
  "website": "it.nl"
}]}

然而,ember似乎并不喜欢它并且给了我:

  

“断言失败:来自findAll的响应必须是数组,而不是   未定义“

我认为这是正确的json格式,ember期望从get请求中获取所有客户,出现了什么问题?

仅供参考,我制作了一个与fortunejs配合使用的创建页面。为此我必须像这样修改RESTSerializer:

App.ApplicationSerializer = DS.RESTSerializer.extend({
serialize: (record, options) ->
    [this._super record, options] #Turn into array

serializeIntoHash: (hash, type, record, options) ->
    console.log type.typeKey
    type.typeKey = Ember.Inflector.inflector.pluralize type.typeKey #pluralize root key
    console.log type.typeKey
    console.log record
    result = this._super hash, type, record, options

});

但是这应该与api的传入JSON无关。

任何想法出了什么问题?

1 个答案:

答案 0 :(得分:0)

我知道这已经过时了,而且我不确定Stack Overflow的政策,但是我正在寻找未解决的问题,看看我是否知道任何问题......

我认为这里的问题是findAll(当前版本的Ember Data中不存在)是一种只进行商店查找的方法。相当于当前版本中的store.allhttp://emberjs.com/api/data/classes/DS.Store.html#method_all)。

您需要store.find,它会对数据(http://emberjs.com/api/data/classes/DS.Store.html#method_find)发出后端服务器请求。

希望这有助于任何偶然发现此问题的人......