Как следует реагировать на сервере при выполнении 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?
- Обновлены ли записи в магазине с ответом, который мы получаем с сервера?
- Назначены ли идентификаторы?
- Как назначаются идентификаторы? На основании порядка в массиве?
Я использую jsonapiserializer, и я использую атрибут include. Если у вас есть эта модель, определенная для включенных данных, ember распознает ее и вставляет данные в хранилище. Это то, что вы просите? – mk2
Нет, если я делаю сообщение, где я создаю счет-фактуру вместе с линиями счетов, перед тем, как делать почту, у меня уже есть (в этом случае 3, счет-фактура + 2 строки-фактуры) модели в моем магазине; Получив ответ, я хочу сопоставить идентификаторы счета и две строки счетов с моделями, уже находящимися в магазине. Как это работает с EmbeddedRecordsMixin? – pjcarly