Ember.js embedded json errors out#您必须在传递给push的哈希中包含一个id

Ember.js embedded json errors out#您必须在传递给push的哈希中包含一个id,ember.js,ember-data,Ember.js,Ember Data,获取此错误。不知道我为什么会犯这个错误……如果有人能帮我找出这个错误的原因,我将不胜感激 加载路由时出错:错误:断言失败:您必须在传递给push at new Error(本机)at Error.Ember.Error的哈希中包含id 从其他与类似错误相关的帖子中可以看出,这与未正确处理主键的json有关。但我的json响应看起来是正确的 ****here are model objects:**** var PersonInfo = DS.Model.extend({ first: D

获取此错误。不知道我为什么会犯这个错误……如果有人能帮我找出这个错误的原因,我将不胜感激

加载路由时出错:错误:断言失败:您必须在传递给push at new Error(本机)at Error.Ember.Error的哈希中包含id

从其他与类似错误相关的帖子中可以看出,这与未正确处理主键的json有关。但我的json响应看起来是正确的

 ****here are model objects:**** 
var PersonInfo = DS.Model.extend({
  first: DS.attr('string'),
  last : DS.attr('string'),
  addresses: DS.hasMany('personAddress', {embedded: 'always'})
 });
 Ember.Inflector.inflector.irregular("personInfo", "peopleInfo");
 export default PersonInfo;

 var Address = DS.Model.extend({
  type: DS.attr('string'),
  personInfo: DS.belongsTo('personInfo')
 });
 export default Address;

 ****here is my deserializer:****


 var PersonInfoSerializer = DS.ActiveModelSerializer.extend({
  primaryKey: 'id',
  extractArray: function(store, type, payload, id, requestType) {   
      var peopleInfo =payload.peopleInfo;              
      var adds = [];
     // debugger;
      peopleInfo.forEach(function(personInfo){              
           var addresses = personInfo.addresses,
                addressIds = addresses.mapProperty('id');                         
              adds.push(addresses);
              personInfo.addresses = addressIds;
      });             
      payload.addresses = adds;
      return this._super(store, type, payload, id, requestType);      }
       });
      export default PersonInfoSerializer;

     ****and here is the json response which i am mocking in API STUB****



  server.get('/peopleInfo', function(req, res) {
                var person_info = {
                 "peopleInfo": [{
                   "id": "1",
                   "first": "Tom",
                   "last": "Dale",
                   "addresses": [{
                     "id": "1",
                     "type": "Home"
                   }, {
                        "id": "2",
                      "type": "Work"
                   }]
                 }]
               };
    res.send(person_info);
            });

我不知道您为什么要使用ActiveModelSerializer,但如果您的数据不是以Rails通常提供的格式提供的,那么ActiveModelSerializer并不能真正为您带来任何好处

您发现数据的格式不正确。此外,不需要再编写什么都不做的{embedded:'always'}。您可能需要查看转换文档


使用活动模型序列化程序有什么原因吗?
App.PersonInfoSerializer = DS.RESTSerializer.extend({
  extractArray: function(store, type, payload, id, requestType) {   
      var peopleInfo =payload.peopleInfo;              
      var adds = [];

      peopleInfo.forEach(function(personInfo){    
        //debugger;
           var addresses = personInfo.addresses,
              addressIds = addresses.getEach('id');  

              adds = adds.concat(addresses);
              personInfo.addresses = addressIds;
      });             

      payload.personAddresses = adds;
      return this._super(store, type, payload, id, requestType);      
  }
});