Ember cli mirage error: patch handler cannot read property update of null
Ember cli mirage error: patch handler cannot read property update of null
我正在使用 ember cli mirage 和我的 amber 应用程序,我在固定装置中定义了数据并使用了 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);
});
mirage/serializers/application.js
import { RestSerializer } from 'ember-cli-mirage';
export default RestSerializer.extend({
primaryKey: 'keyId'});
app/serializers/application.js
import DS from 'ember-data';
export default DS.RESTSerializer.extend({
primaryKey: 'keyId', });
治具样本; mirage/fixtures/survey-groups.js
export default [
{
"code": "dfdj",
"description": "",
"keyId": 29116,
},
{...... }]
我还注意到在服务器返回的数据中,每条记录都添加了一个 id 属性,带有一个字符串值,例如编号:“1”
当我尝试使用此字符串值代替 id 查找记录时,该记录被返回。
可能导致此错误和行为的原因
ember-cli-mirage
的序列化程序没有 primaryKey
选项。据我所知,Mirage 不提供任何自定义主键名称的可能性。因此你不能使用 find
方法。我建议改用 findBy
:return surveyGroups.findBy({ keyId: id }).update(attrs);
另一种选择是在序列化时使用更改主键的名称(serialize
) and normalization (normalize
) of the payload. This approach has the benefit that you are still able to use mirage's shorthands。
我正在使用 ember cli mirage 和我的 amber 应用程序,我在固定装置中定义了数据并使用了 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);
});
mirage/serializers/application.js
import { RestSerializer } from 'ember-cli-mirage';
export default RestSerializer.extend({
primaryKey: 'keyId'});
app/serializers/application.js
import DS from 'ember-data';
export default DS.RESTSerializer.extend({
primaryKey: 'keyId', });
治具样本; mirage/fixtures/survey-groups.js
export default [
{
"code": "dfdj",
"description": "",
"keyId": 29116,
},
{...... }]
我还注意到在服务器返回的数据中,每条记录都添加了一个 id 属性,带有一个字符串值,例如编号:“1” 当我尝试使用此字符串值代替 id 查找记录时,该记录被返回。
可能导致此错误和行为的原因
ember-cli-mirage
的序列化程序没有 primaryKey
选项。据我所知,Mirage 不提供任何自定义主键名称的可能性。因此你不能使用 find
方法。我建议改用 findBy
:return surveyGroups.findBy({ keyId: id }).update(attrs);
另一种选择是在序列化时使用更改主键的名称(serialize
) and normalization (normalize
) of the payload. This approach has the benefit that you are still able to use mirage's shorthands。