Свойства модели не установлены - PullRequest
0 голосов
/ 29 июня 2019

Я пытаюсь получить данные с сервера и установить их в DS.Model Ember (по волшебству ember). Но записи создаются без данных.

У меня есть модель models / product.js:

const { Model } = DS;

export default Model.extend({
    name: DS.attr(),
    price: DS.attr()
});

В маршрутах / product.js я запрашиваю все продукты:

    model() {
        return this.store.findAll('product');
    }

Сервер возвращает данные: https://gyazo.com/ba38b756f334bc22d07fe18ccfddda34

Я ожидаю, что ember создаст 3 записи с данными с сервера. Но на самом деле, это создает https://gyazo.com/a9a7b77d838ec33b05e5f81ef8304cdb

Что не так? Думаю, мне не следует указывать какие-либо адаптеры и сериализаторы, чтобы получить поведение Ember по умолчанию.

1 Ответ

4 голосов
/ 29 июня 2019

Ваш API не соответствует JSON: спецификация API , но этот используется Ember Data по умолчанию. Если вы не следуете этому соглашению, вам нужно изменить сериализатор и адаптер приложений. Позвольте мне процитировать документацию Ember об этом:

Гибкость данных Ember

Благодаря использованию шаблона адаптера Ember Data можно настроить работать со многими различными видами бэкэндов. Есть целый экосистема адаптеров и несколько встроенных адаптеров, которые позволяют вашему Приложение Ember для общения с разными типами серверов.

По умолчанию Ember Data предназначен для работы из коробки с JSON: API. JSON: API - это формальная спецификация для сборки обычные, надежные и производительные API, которые позволяют клиентам и серверы для передачи данных модели.

JSON: API стандартизирует взаимодействие приложений JavaScript с серверами, поэтому вы уменьшаете связь между вашим веб-интерфейсом и бэкэндом и получаете больше свободы менять части своего стека.

Если вам нужно интегрировать приложение Ember.js с сервером, который не иметь адаптер в наличии (например, вы вручную свернули сервер API который не соответствует какой-либо спецификации JSON), Ember Data предназначен для конфигурирования для работы с любыми данными вашего сервера возвращается.

Источник: https://guides.emberjs.com/release/models/#toc_ember-data-flexibility

Я не уверен, был ли это вопрос или нормативное утверждение, но на самом деле вы должны указать адаптеры и сериализаторы, если ваш API не является JSON: API.

...