因格式错误而承诺错误

时间:2016-04-20 21:23:54

标签: ember.js ember-data

我创建了一个新的RestAdapter。

import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  namespace: 'api',
  host: 'http://localhost:8081'
});

如果我查看网络调用,api会被正确调用并返回此数据。

{
      "environments": [
        {
          "Id": 1,
          "LocalePath": "C:\\XML_DEPOT",
          "Name": "Acceptation 1",
          "RemotePath": "D:\\XML_DEPOT",
          "DatabaseServerName": "somedata",
          "DatabaseName": "somedata",
          "Port": 60903
        },
        {
          "Id": 2,
          "LocalePath": "bob",
          "Name": "Acceptation 2",
          "RemotePath": "bob",
          "DatabaseServerName": "somedata\\somedata",
          "DatabaseName": "somedata",
          "Port": 60904
        }
    ]
}

然后我收到错误说

  

断言失败:normalizeResponse必须返回有效的JSON API   文件

但据我所知,适配器不是JSONAPIAdapter所以它不应该尝试序列化它有一个jsonapi ??

1 个答案:

答案 0 :(得分:1)

Ember Data自版本1.13开始在内部使用JSON Api规范described in release notes。 DS.RestAdapter"的normalizeResponse方法用于将有效负载从服务器规范化为JSON-API文档。"

您的有效负载看起来不像默认情况下除了Ember数据之外的RestAdapater。 RestAdapter需要camelCase键,但你的是CamelCase。您必须自定义序列化程序keyForAttribute方法才能使其正常工作。