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
) полезной нагрузки. Этот подход имеет то преимущество, что вы все еще можете использовать сокращенные миражи.