Ember cli mirage error: обработчик патча не может прочитать обновление свойства null - PullRequest
0 голосов
/ 29 мая 2018

Я использую ember cli mirage с моим янтарным приложением, у меня есть данные, определенные в приборах и использующие RestSerializer, я пытаюсь смоделировать обновление атрибутов записи, но получаю сообщение об ошибке: Обработчик исправлений для API / обзора URL-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 был добавлен к каждой записи со строковым значением, например, id: "1", когда япопытка найти запись, используя это строковое значение вместо идентификатора, возвращается запись.

Что может быть причиной этой ошибки и поведения

1 Ответ

0 голосов
/ 29 мая 2018
Сериализатор

ember-cli-mirage не имеет опции primaryKey.Насколько мне известно, mirage не дает никакой возможности настроить имя первичного ключа.Поэтому вы не можете использовать find метод.Я бы рекомендовал использовать findBy вместо: return surveyGroups.findBy({ keyId: id }).update(attrs);

Другой вариант - использовать изменение имени первичного ключа при сериализации (serialize) и нормализации (normalize) полезной нагрузки.Преимущество этого подхода заключается в том, что вы все еще можете использовать shorthands mirage .

...