Ember cli mirage错误:补丁处理程序无法读取null的属性更新

时间:2018-05-29 09:27:08

标签: ember.js ember-cli-mirage

我正在使用ember cli mirage和我的琥珀色应用程序,我在灯具中定义数据并使用RestSerializer,我试图模拟更新记录的属性但是收到错误:url api / survey的补丁处理程序-groups / [id]引发错误:无法读取null的属性更新

mirage / config.js

 this.patch('/survey-groups/:id', function({ surveyGroups }, request) {
let id = request.params.id;
let attrs = this.normalizedRequestAttrs();

return surveyGroups.find(id).update(attrs);

});

蜃/串行化器/ application.js中

import { RestSerializer } from 'ember-cli-mirage';
export default RestSerializer.extend({
primaryKey: 'keyId'});

应用/串行化器/ application.js中

import DS from 'ember-data';

export default DS.RESTSerializer.extend({
primaryKey: 'keyId', });

夹具样品;幻影/夹具/调查-groups.js

export default [
  {
    "code": "dfdj", 
    "description": "", 
    "keyId": 29116, 
  }, 
  {...... }]

我还在服务器返回的数据中注意到,每个记录都添加了一个id属性,其中包含一个字符串值,例如: id:" 1" 当我尝试使用此字符串值代替id来查找记录时,将返回记录。

可能导致此错误和行为的原因

1 个答案:

答案 0 :(得分:4)

ember-cli-mirage的序列化程序没有primaryKey选项。据我所知,海市蜃楼不提供自定义主键名称的任何可能性。因此,您无法使用find方法。我建议改为使用findByreturn surveyGroups.findBy({ keyId: id }).update(attrs);

另一种选择是使用更改有效负载的序列化(serialize)和规范化(normalize)上的主键名称。这种方法的好处是您仍然可以使用海市蜃楼shorthands