Ember cli mirage error: обработчик патча не может прочитать обновление свойства null

Я использую ember cli mirage с моим янтарным приложением, у меня есть данные, определенные в приборах, и я использую RestSerializer, я пытаюсь смоделировать обновление атрибутов записи, но получаю сообщение об ошибке: Обработчик патчей для URL api/survey-groups/[id] выдал ошибку: невозможно прочитать обновление свойства null

мираж / 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". Когда я пытаюсь найти запись, используя это строковое значение вместо идентификатора, запись вернулся.

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

1 ответ

Решение

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

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

Другие вопросы по тегам