Ember cli 海市蜃楼错误:修补程序处理程序无法读取 null 的属性更新



我正在将余烬 cli mirage 与我的琥珀色应用程序一起使用,我在灯具中定义了数据并使用 RestSerializer,我正在尝试模拟更新记录的属性,但收到错误:url api/survey-groups/[id] 的补丁处理程序抛出错误:无法读取 null 的属性更新

海市蜃楼/配置.js

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

}(;

海市蜃楼/序列化器/应用程序.js

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

应用程序/序列化程序/应用程序.js

import DS from 'ember-data';
export default DS.RESTSerializer.extend({
primaryKey: 'keyId', });

夹具样本;海市蜃楼/固定装置/调查组.js

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

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

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

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

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

最新更新