2017-01-09 5 views
0

Как следует реагировать на сервере при выполнении POST для создания новых записей или PATCH для обновления существующих записей, используя значение по умолчанию JsonApiSerializer and Adapter, но в сочетании с DS.EmbeddedRecordsMixin, чтобы включить hasMany отношения в запросе.Что такое ожидаемый ответ Ember Data для JsonApiSerializer + EmbeddedRecordsMixin

Это важно, поскольку данные Ember Data используют ответ для присвоения идентификаторам записей после их создания и изменения их состояния.

Рассмотрите следующий запрос, в котором счет-фактура создается в сочетании с двумя строками счетов-фактур.

{ 
    "data": { 
     "type": "sales-invoices", 
     "attributes": { 
      "name": null, 
      "net-price": 29, 
      "vat-amount": 6.09, 
      "gross-price": 35.09 
     }, 
     "relationships": { 
      "customer": { 
       "data": { 
        "type": "companies", 
        "id": "131" 
       } 
      }, 
      "organization": { 
       "data": { 
        "type": "organizations", 
        "id": "3" 
       } 
      } 
     }, 
     "sales-invoice-lines": [ 
      { 
       "data": { 
        "attributes": { 
         "name": "Basic Linux Hosting", 
         "sort": 0, 
         "unit-price": 9, 
         "quantity": 1, 
         "total": 9, 
         "net-price": 9, 
         "vat-amount": 1.89, 
         "gross-price": 10.89, 
         "created": null, 
         "changed": null 
        }, 
        "relationships": { 
         "sales-invoice": { 
          "data": { 
           "type": "sales-invoices", 
           "id": null 
          } 
         }, 
         "vat-rate": { 
          "data": { 
           "type": "vat-rates", 
           "id": "1" 
          } 
         } 
        }, 
        "type": "sales-invoice-lines" 
       } 
      }, 
      { 
       "data": { 
        "attributes": { 
         "name": "Extra .com domain", 
         "sort": 1, 
         "unit-price": 20, 
         "quantity": 1, 
         "total": 20, 
         "net-price": 20, 
         "vat-amount": 4.2, 
         "gross-price": 24.2, 
         "created": null, 
         "changed": null 
        }, 
        "relationships": { 
         "sales-invoice": { 
          "data": { 
           "type": "sales-invoices", 
           "id": null 
          } 
         }, 
         "vat-rate": { 
          "data": { 
           "type": "vat-rates", 
           "id": "1" 
          } 
         } 
        }, 
        "type": "sales-invoice-lines" 
       } 
      } 
     ] 
    } 
} 

В обычном запросе GET, Json Api включает в себя отдельные счета-фактуры строки в included хэш (см ссылку на спецификации). Для встроенных записей, должен ли ответ от POST или PATCH включать записи в включенном хэше или в хэш-строку (в данном случае) -продажа-фактуры?

  • Работает ли это с данными Ember?
  • Обновлены ли записи в магазине с ответом, который мы получаем с сервера?
  • Назначены ли идентификаторы?
  • Как назначаются идентификаторы? На основании порядка в массиве?
+0

Я использую jsonapiserializer, и я использую атрибут include. Если у вас есть эта модель, определенная для включенных данных, ember распознает ее и вставляет данные в хранилище. Это то, что вы просите? – mk2

+0

Нет, если я делаю сообщение, где я создаю счет-фактуру вместе с линиями счетов, перед тем, как делать почту, у меня уже есть (в этом случае 3, счет-фактура + 2 строки-фактуры) модели в моем магазине; Получив ответ, я хочу сопоставить идентификаторы счета и две строки счетов с моделями, уже находящимися в магазине. Как это работает с EmbeddedRecordsMixin? – pjcarly

ответ

0

Я боюсь, что EmbeddedRecord не поддерживается при использовании JSONAPIAdapter/Serializer. Вместо этого вам понадобится сделать свою встроенную полезную нагрузку с помощью включенного хэша.

+0

Не могли бы вы рассказать об этом. Я не понимаю, что мой jsonapiserializer не включает ассоциации – masciugo