Как структурировать модель для Redux ORM
Я получаю ответ, похожий на следующий формат с сервера.
{"channels": [{"name":"discovery", "id":"12",
"details":{"src":"link", "logo":"imagelink"}}]
Я планирую использовать Redux-Orm для управления состоянием в магазине. Когда я пытаюсь определить модель, у меня возникают путаницы. Один из способов - определить модель канала с именем и идентификатором в качестве атрибутов, детали - как сопоставление один к одному, а детали - модель с src, атрибуты логотипа, как показано ниже.
const channel = class Channel extends Model {};
channel.fields = {
name: attr(),
id: attr(),
details: oneToOne('details', 'channels')
}
const details = class Details extends Model {};
details.fields = {
src: attr(),
logo: attr()
}
Или я должен определить один класс модели, который представляет ответ как есть? Если да, то как определить и получить к нему доступ?
1 ответ
Если вы хотите иметь Detail
модель, ваш бэкэнд должен идентифицировать его с id
словно Channel
модель, и тогда вы можете сделать oneToOne
связь.
При этом использование одной или двух моделей полностью зависит от того, как они будут взаимодействовать в вашем приложении и могут расти. Если твой details
поле больше не будет расти, моя сугубо личная точка зрения состояла бы в том, чтобы держать его в едином Channel
модель. вы бы получили к нему доступ через channel.details
или же channel.details.src
прозрачно.
ИМО, oneToOne
Простое подобное отношение не нуждается в конкретной модели.