Ember数据findAll()导致" TypeError:无法读取属性' type'未定义"

时间:2017-02-28 21:24:41

标签: ember.js ember-data

将我的第一个模型连接到我的后端,并在调用Ember数据时发现以下错误: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()
});

模特,

{  
    "restaurants": {  
        "id":1,
        "name":"Restaurant Name"
    }
}

我可以看到Ember正在访问我的本地服务器并从正确的URL返回格式正确的JSON,

declare @SQL nvarchar(max) = N''

select @SQL = @SQL + N'select DatabaseName = ''' + quotename(name) + ''' 
from ' + quotename(name) + '.sys.tables 
where name in (''MasterSchedules'', ''Users'') 
having COUNT(*) = 2 UNION ALL '
from sys.databases where name not in ('master', 'tempdb', 'model', 'msdb')

set @SQL = left(@SQL, len(@SQL) - 10)

exec sp_executesql @SQL

我见过类似的问题,但通常与格式不正确的JSON有关。

2 个答案:

答案 0 :(得分:2)

使用的默认数据格式Ember数据是JSON API,因此您的数据应如下所示

{
  "data": {
    "id": "1",
    "type": "restaurants,
    "attributes": {
      "name": "Name"
    }
  }
}

使Ember数据满足您的需求而不改变后端如何生成数据的格式。您可以添加自己的适配器,用于将您的Ember数据请求转移到正确的请求。

在下面的链接中了解有关适配器的更多信息,

https://guides.emberjs.com/v2.6.0/models/customizing-adapters/

答案 1 :(得分:1)

您的JSON文件的格式类似于REST API响应,但默认情况下Ember使用JSONAPIAdapter。

首先修复JSON,它应该返回一个数组:

$("#container").load($("#survey").contents().find(".requiredDiv"));

然后更改适配器并配置序列化程序:

[{  
  "id":1,
  "name":"Restaurant Name"
}]

了解更多:

Customizing adapters

JSONAPIAdapter

RESTAdapter