Невозможно использовать сокращенные обработчики маршрутов, если используется RestSerializer? (эмбер-кли-мираж)

Я настроил простой 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? Это было бы очень грустно, но, по крайней мере, я бы знал тогда.

Спасибо за вашу поддержку!


person Christoph Langhof    schedule 28.09.2017    source источник
comment
Я не знаю ответа, но вы можете отметить версию Mirage, которую вы хотите использовать.   -  person AlexMA    schedule 28.09.2017
comment
Я хочу использовать версию, которая содержит поддержку фабрик и автоматическое определение модели. Но когда я попробовал первую версию, содержащую обе эти функции, она также вела себя так, как я описал выше.   -  person Christoph Langhof    schedule 29.09.2017


Ответы (1)


Краткий ответ: похоже, вам пока нужен собственный сериализатор, пока не будет объединено исправление ошибки.

Длинный ответ: эта проблема, похоже, возникла при обновлении 0.2 -> 0.3 для Mirage, вероятно, из-за базовых изменений БД, внесенных в Mirage. Вероятно, это будет исправлено, но пока вам нужно обойти это.

person acorncom    schedule 29.09.2017