(Ember.js) Как сохранить загруженные данные из вызова ajax? - PullRequest
0 голосов
/ 17 мая 2018

Добрый день!

Просто хотите спросить, как создать JSONAPISerializer для вызова ajax?Из того, что я понимаю на документах.Я должен сначала создать модель, прежде чем я смогу сделать JSONAPISerializer.Но мне нужно вызвать пользовательскую конечную точку, которая не указана в качестве моей модели.

Моя цель - pushPayload все загруженные данные, поступающие с моей конечной точки.но проблема в следующем:

{  
 "data":[  
  {  
     "type":"promotions-verify",   <----- it's not an actual model 
     "attributes":{  
        "cart-items-discount-in-cents":21900
      },
    "relationships":{...},    <---- sideloaded data that I want to push on ember-data
  }],

 "included": []              <---- sideloaded data that I want to push on ember-data
}

1 Ответ

0 голосов
/ 17 мая 2018

Есть ли причина, по которой вы не можете сделать модель для promotions-verify? Это был бы самый чистый способ осуществить загрузку данных с боковой загрузкой, так как Ember будет обрабатывать большую часть сериализации / отправки в хранилище для вас.

Если это невозможно, и вы делаете запрос ajax, вам может потребоваться сопоставить полезные нагрузки relationships и included, чтобы они совпали друг с другом (Lodash _.map() может сработать для этого). Затем вы можете вручную отправить эти данные (pushPayload) в хранилище Ember, при этом убедитесь, что у отправляемых элементов также есть модели и сериализаторы.

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

{
    "data": [{
        "id": 1,
        "type": "promotions-verify",
        "attributes": {},
        "relationships": {}
    }],
    "included": []
}
...