【问题标题】:ember data debug model deserialisationember数据调试模型反序列化
【发布时间】:2016-01-20 15:07:49
【问题描述】:

我有一个从 REST API 获取数据的 ember 应用程序。

我有一个未正确处理的特定模型联系人

如果型号名称拼写错误,则不会出现错误消息。 索引路由的有效负载包含大约 1500 个联系人,如下所示:

{"contacts":
   [{"id":1,
     "type":"customer",
     "foreign_key":1242,
     "first_name":"John",
     "last_name":"Smith",
     ...
     "created_at":"-0001-11-30 00:00:00",
     "updated_at":"-0001-11-30 00:00:00",
     "customer_id":1242
    },
     ...
   ]
}

当我查看 Network 选项卡时,JSON 响应看起来不错。浏览器能够很好地解析和显示响应。

我已经将响应与类似模型进行了比较,格式对我来说看起来是一样的。

在 ember 检查器中,在 Data 下,我得到 1 个 id=null 且其他字段未定义的联系人。

联系方式为:

import DS from 'ember-data';
export default DS.Model.extend({
  type:           DS.attr('string'),
  foreign_key:    DS.attr('number'),
  first_name:     DS.attr('string'),
  last_name:      DS.attr('string'),
  ... more strings 
  created_at:     DS.attr('string'),
  updated_at:     DS.attr('string'),
  customer:       DS.belongsTo('customer')  
});

余烬 2.0.2
余烬数据 2.0.0
使用 pod 结构

我该如何进一步调查?看起来响应没有被正确解析并转换为 contact 模型。

回答

事实证明,您不应该使用 type 作为模型中的字段名称之一。
(我应该在定义我的数据库表时听到我听到的小警告铃声......)

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    尝试在您的应用程序序列化程序中添加normalizeArrayResponse,然后像这样调试:

    normalizeArrayResponse: function(store, primaryModelClass, payload, id, requestType) {
      console.log(payload);
      return this._super(store, primaryModelClass, normalizedRecords, id, requestType);
    }

    只是为了确认您的数据正在通过序列化程序。

    【讨论】:

    • 谢谢,我收到Object {contacts: Array[1357]}
    • 意味着您从端点获取一个数组。您可以console.log(JSON.stringify(payload)); 以 JSON 格式查看它。为什么你会收到 1357 个联系人,不是很多吗?
    • 很多...我现在已经将其减少到 200...转换为 JSON 有什么意义,这就是它最初到达时的样子...看起来在这一点上对我很好......但是我在数据下的 Ember 检查器中只有 1 个未定义的联系人......
    • 重点就是能看到json字符串中的联系人,方便调试,仅此而已。您现在清楚的是您的联系人实际上正在进入序列化程序,您也许可以在 chrome devtools 中设置断点并开始调试以找出他们不进入您的商店的原因。你有任何错误吗?
    • 没有抛出错误...我想通了...模型中有一个名为type的字段,它与内部变量发生冲突。
    猜你喜欢
    • 1970-01-01
    • 2012-09-29
    • 2010-11-28
    • 2016-10-27
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    相关资源
    最近更新 更多