Как структурировать модель для 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 Простое подобное отношение не нуждается в конкретной модели.

Другие вопросы по тегам