Я настроил простой Ember Twiddle чтобы показать вам мою ошибку, возникающую при попытке обновить модель. Примечательно, что я использую ember-cli-mirage
для имитации данных. Согласно документам, я создал сокращенный маршрут, который должен обрабатывать запрос PUT. Да, но с ошибкой: Your handler for the url /api/shops/1 threw an error: Cannot convert undefined or null to object
При использовании JSONAPISerializer все работает с сокращениями (mirage/config.js
), и я могу обновлять модели, но в моем случае я должен использовать RESTSerializer
с сериализованными идентификаторами в ответах. Полезная нагрузка запроса, когда я отправляю attrs
модели, не содержит Id
в конце имени свойства, например:
// attrs object in PUT request
{
name: "Shop 1",
city: "1" // belongsTo relationship,
}
Теперь Mirage пытается найти те свойства в соответствующей модели базы данных, которые необходимо обновить, но не может их найти, потому что в базе данных это cityId
, а не только city
...
Я также нашел этот отчет о проблеме, и он работает, но я надеялся Я мог бы избежать чего-то подобного. Насколько я помню, в предыдущих версиях ember-cli-mirage (v0.1.x) также не нужно было переопределять метод normalize в сериализаторе, чтобы можно было использовать RestSerializer с сериализованными идентификаторами…
Мой вопрос: есть ли способ придерживаться только сокращенных обработчиков маршрутов, или мне действительно нужно написать помощник или другое собственное решение только потому, что я должен использовать RestSerializer? Это было бы очень грустно, но, по крайней мере, я бы знал тогда.
Спасибо за вашу поддержку!