当我使用Ember Data从JSON响应创建记录时收到以下错误。 是什么赋予了? 我正在遵循文档说明的内容。

Uncaught Error: Assertion Failed: Ember Data expected a number or string to represent the record(s) in the `user` relationship instead it found an object. If this is a polymorphic relationship please specify a `type` key. If this is an embedded relationship please include the `DS.EmbeddedRecordsMixin` and specify the `user` property in your serializer's attrs object.

JSON被解析:

[
    {
        "id": 76,
        "title": "Title",
        "shipped": 0,
        "date": "2015-05-21T05:00:00.000Z",
        "user": {
            "firstName": "First Name",
            "lastName": "Last Name",
            "email": "hellothere@gmail.com",
            "id": 1
        }
    }
]

发货型号:

import DS from 'ember-data';

export default DS.Model.extend({
    title: DS.attr('string'),
    user: DS.belongsTo('user', { async: false })    
});

路线:

import Ember from 'ember';

export default Ember.Route.extend({

   beforeModel: function() {

        if(!localStorage.accessToken) {
            this.transitionTo('login');
        }

    },

   model: function() {      
      var shipmentObjects = [];
      var App = this;
      Ember.$.getJSON('http://localhost:1337/subscription/1/shipments/upcoming', function(shipments) {
            shipments.forEach(function(data) {
            var shipment = App.store.push('shipment', data);
                shipmentObjects.pushObject(shipment);
            });
      });
      return shipmentObjects;
   }

});

===============>>#1 票数:0

阅读错误消息。 这很难说清楚。 默认情况下,Ember Data希望关联由ID表示。 如果关联是嵌入的,则必须告诉Ember Data。 您将需要以下内容:

// serializers/shipment.js
export default ApplicationSerializer.extend(DS.EmbeddedRecordsMixin, {
    attrs: {
        user: { embedded: 'always' }
    }
});

并删除{async: false} ,因为数据已嵌入在那里。

请参阅http://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html

===============>>#2 票数:0 已采纳

如果您无法修改json响应并设法以其他方式安排数据,则可以创建自定义序列化程序

App.MODELNAMESerializer = DS.ActiveModelSerializer.extend({
  extract: function(store, type, payload, id, requestType){
     var shipments = [];

     //CREATE A NEW PAYLOAD THAT EMBER CAN READ

     var _payload = {  };
     return this._super(store, type, _payload, id, requestType);
  }
});

您的json应该看起来像这样

{
   shipments: [
     {
      "id": 76,
      "title": "Title",
      "shipped": 0,
      "date": "2015-05-21T05:00:00.000Z",
      "user_id": 1,
      }
     ],
      "users": [
      {
        "firstName": "First Name",
        "lastName": "Last Name",
        "email": "hellothere@gmail.com",
        "id": 1
       }
   ]
}

  ask by morcutt translate from so

未解决问题?本站智能推荐:

1回复

处理路线时出现Ember错误:列出断言失败

我一直在努力使Emberjs前端(使用Ember Data)与Flask API后端一起使用。 当在浏览器中单击“列表”路由时,适配器似乎正在工作,因为调用了api,我也可以在网络检查器中检查原始对象,但是在Ember Inspector中,它表明存在关联的模型,但是所有的数据是不确定的,没有
1回复

创建的Ember模型对象,但未显示在模板中

我正在为用户的收藏夹歌曲制作soundCloud json。 这是json文件 我成功访问了收藏夹和用户属性。 这是我的模型功能 如您所见,我可以使用属性创建我的收藏夹和用户模型,请参见控制台 然后在我的模板中有一个问题,我可以显示所有喜欢的属性(标题和
2回复

ember-dev-fixtures错误:“断言失败:findAll的响应必须是数组,而不是未定义”

我正在使用称为ember-dev-fixtures的ember插件,当我尝试获取该数组不是一个数组时,它将引发错误。 蓝图的配置方式如下: 灯具/ 型号名称 .js 我已经在网上到处搜索过,除了我之外,似乎没有人对此附加组件有任何疑问,所以我认为我会在这里发布。 似乎是一个非常
1回复

Ember Cli和ASP.NET WebAPI-连接数据

我有一个在localhost:4200上运行的Ember Cli项目和一个在localhost:56967上运行的asp.net webapi项目。 这两个项目分别运行良好:我可以启动我的Ember应用程序并测试多条路线,看起来还不错,并且可以访问我的api(例如:api / products
1回复

Ember-如何清理JSON响应

我是EmberJS的新手,但是很遗憾,我必须处理不包含根或id的JSON,而且我似乎找不到任何明确的方法来完成我要尝试的工作,这仅仅是为了清理响应。 我假设我需要使用余烬序列化器来执行此操作。 这是我目前从我的api/locations : 我假设我需要它看起来像这样,带有根
1回复

如何在Ember JS中填充选择字段

当我有一个返回JSON对象的PHP时出现错误 我的PHP返回: [{“ fromm”:“ Chennai”},{“ fromm”:“ Chennai”},{“ fromm”:“ Madurai”},{“ fromm”:“ Madurai”},{“ fromm”:“ Chennai”}
1回复

使用ember-data访问SoundCloud中的嵌套对象json

我正在为用户的收藏夹歌曲制作soundCloud json。 在这里你可以看到它 我可以访问我的收藏夹曲目,但不能访问用户ID和用户名。 我在这里使用的代码将返回我最喜欢的属性,而我已注释了无法返回用户属性的代码。 我在控制台中收到此错误“未捕获的TypeError:i
1回复

在Ember中深度监视具有计算属性的任意JSON键

我有一个用例,其中Model具有用于任意配置的JSON属性: configuration: DS.attr() 。 我有一个configurationService (在每个组件/路由/控制器/ ...中初始化)具有计算属性,可以在整个应用程序中轻松检索此配置 由于JSON配置非常大
1回复

从服务器分发JSON响应以处理Ember CLI中的条形模板

我来自服务器的Json API 我从服务器收到此API响应。 如何在模板中显示JSON。 我的路线 我的范本 我的模型文件 我想显示对模板的响应json。 我尝试过,但是模板没有得到结果。
1回复

如何设置ember-cli以获取JSON文件中的值

如何设置ember-cli从以下JSON文件中使用键“ remaining”,“ success”和“ deck_id”获取值? 我可以在控制台>网络> HXR中看到我正在接收如下所示的JSON数据: 这是我的其余设置: 和 和 和 最后