
Игорь
27.08.2018
15:40:46

Dr.
27.08.2018
15:41:11
А до клиента точно данные доходят?
вообщем юзер один подключается, у него все рендерится и все нормально
тут проблема в том что когда подключается юзер 2
то у юзера 1, юзер 2 не появляется, и появляется только при перезагрузки страницы...
мне кажется я больше с сокетами чтото запортачил

DimenSi
27.08.2018
15:41:15
ты кому вообще работу хочешь этим упростить беку или фронту?

Google

Ilya
27.08.2018
15:42:07
да
А, кажись понял. Данные в неком внешнем storage живут. Надо их либо через props вкинуть, либо setState и из state забирать. За внешним хранилищем тупо никто не следит

Dr.
27.08.2018
15:42:48
@observer у mobx разве не делает этого?

Игорь
27.08.2018
15:43:15

Ilya
27.08.2018
15:43:17
В текущем примере имхо проще в state компонента закинуть

Dr.
27.08.2018
15:44:43
Спасибо, попробую через Стэйт сделать

Ilya
27.08.2018
15:45:01
Удачи

Roman
27.08.2018
15:45:38

Игорь
27.08.2018
15:46:49

dima
27.08.2018
15:51:05

Игорь
27.08.2018
15:52:15
Нормализацию обычно делают на фронте
А зачем это делать, если из нного числа запросов деревьев, я не получаю полный список структурированных данных? Когда можно это просто вынести в 1 урл.

Google

dima
27.08.2018
15:53:02

Игорь
27.08.2018
15:55:08

dima
27.08.2018
15:55:33
ну это ты нормализовал. Так и в чем проблема ? Смысл всех сообщений ?

Kelin
27.08.2018
15:56:02

Игорь
27.08.2018
15:56:04
Смысл отдавать из апи не нормализованные

dima
27.08.2018
15:56:24

Игорь
27.08.2018
15:57:28
Про это и был вопрос часто ли вы с этим сталкивается, и как боритесь.
Ибо мне из апи вообще хероту присылают.

dima
27.08.2018
15:58:03

Игорь
27.08.2018
15:58:38

dima
27.08.2018
15:58:56
так дело то в том чо на каждый чих гонит. А если много данных ?

Игорь
27.08.2018
15:59:10
И бек больше не зависит от того кому что надо. Единообразное апи

Kelin
27.08.2018
16:00:32

Игорь
27.08.2018
16:01:04

dima
27.08.2018
16:01:24

Игорь
27.08.2018
16:01:49

Kelin
27.08.2018
16:02:11

Игорь
27.08.2018
16:02:46

Google

Игорь
27.08.2018
16:04:16
Поиск по прямому вождению в hashmap получается очень быстрым. Почти мгновенным. И данные консистентны..


Valeriy
27.08.2018
16:04:27
Можно договорится с беком какой формат передачи данных будет удобен обоим но надо не забывать что есть определенные ситуации когда неправильный формат передачи приведет к тормозам.
Очень часто делают так что сервер передает даннные вложенными объектами
{
tasks: [
{
id: 1,
...
subTasks: [
{id: 1, ...},
{id: 2, ...}
]
},
{
id: 2,
...
subTasks: [
{id: 3, ...},
{id: 4, ...}
]
}
]
}Хотя правильно передавать данные в плоском, нормализированном виде
{
tasks: {
1: {id: 1, ..., subTasks: [1, 2]},
2: {id: 2, ..., subTasks: [3, 4]}
...
},
subTasks: {
1: {...},
2: {...},
3: {...}
4: {...}
}
}потому что когда связи между сущностями будут не one-to-many а many-to-many - например нужно передать юзера со списком его друзей и друзей его друзей то попытка передать данные через вложенные объекты приведет к тому что в окажется много дублей юзеров что приведет к мегабайтному json-у, медленной передаче по сети и тормозам как по парсингу так и по обработке.
ну учитывая, что сейчас модны всякие cassandra, mongo и прочие, где то id-шек нет от слова совсем, то нет реляций
поэтому от бакендеров и приходит всякое говно


dima
27.08.2018
16:04:56

Игорь
27.08.2018
16:05:40

dima
27.08.2018
16:06:19

DimenSi
27.08.2018
16:07:02
ну люди же пользуются редаксом и не жалуются

Игорь
27.08.2018
16:08:38
Есть 2 варианта.
1 у тебя уже есть иерархия. И если что то в иерархии изменилось ты об этом не узнаешь, пока не перезапросишь иерархичные данные.
2 случай плоские данные.
если из какого то другова место данные изменили, ты это тут же отображаешь там где ты строишь сам эту иерархию, и во всех других местах, где данные на нее завязаны

dima
27.08.2018
16:09:54

Kevin
27.08.2018
16:10:02
господи, как вы этим флоу пользуетесь, лучше бы я и не пытался

Игорь
27.08.2018
16:11:03

dima
27.08.2018
16:12:15
ну конкретно тут да

Valeriy
27.08.2018
16:13:05

Kelin
27.08.2018
16:13:11

Игорь
27.08.2018
16:13:25
ну конкретно тут да
теперь в читайся в мой вапрос. Нахуя вообще бек кодеры отдают не плоские структуры. А зачастую в неплоской структуре отдают такую хуйню что плакать охота...

dima
27.08.2018
16:13:50

Valeriy
27.08.2018
16:14:02

Игорь
27.08.2018
16:14:22

dima
27.08.2018
16:14:33

Google

Valeriy
27.08.2018
16:15:16
допустим у тебя автор в большой иерархии в 10 разных местах (редьюсерах)

Игорь
27.08.2018
16:15:43

Valeriy
27.08.2018
16:15:47
прилетел экшин во всех редьюсерах спокойно сделал соответствующие изменения

dima
27.08.2018
16:17:10

Игорь
27.08.2018
16:17:13

dima
27.08.2018
16:17:31

Valeriy
27.08.2018
16:18:04

Admin
ERROR: S client not available

Игорь
27.08.2018
16:18:22

Valeriy
27.08.2018
16:18:38
из кассандры


Игорь
27.08.2018
16:19:09
[В ответ на Игорь]
Можно договорится с беком какой формат передачи данных будет удобен обоим но надо не забывать что есть определенные ситуации когда неправильный формат передачи приведет к тормозам.
Очень часто делают так что сервер передает даннные вложенными объектами
{
tasks: [
{
id: 1,
...
subTasks: [
{id: 1, ...},
{id: 2, ...}
]
},
{
id: 2,
...
subTasks: [
{id: 3, ...},
{id: 4, ...}
]
}
]
}
Хотя правильно передавать данные в плоском, нормализированном виде
{
tasks: {
1: {id: 1, ..., subTasks: [1, 2]},
2: {id: 2, ..., subTasks: [3, 4]}
...
},
subTasks: {
1: {...},
2: {...},
3: {...}
4: {...}
}
}
потому что когда связи между сущностями будут не one-to-many а many-to-many - например нужно передать юзера со списком его друзей и друзей его друзей то попытка передать данные через вложенные объекты приведет к тому что в окажется много дублей юзеров что приведет к мегабайтному json-у, медленной передаче по сети и тормозам как по парсингу так и по обработке.


Valeriy
27.08.2018
16:19:13
т.е. когда у бакендеров нет какого-нибудь postgres, где все по табличкам изначально раскидано

Игорь
27.08.2018
16:19:29
первый вариант какраз не плоские данные, и заметь там есть ИД

Valeriy
27.08.2018
16:20:21
Игорь, от езе раз, не все сервисы, которые хранят данные умеют отдавать их в нормализованном виде

Alexey
27.08.2018
16:20:38
Есть же normalizr


dima
27.08.2018
16:20:45
[В ответ на Игорь]
Можно договорится с беком какой формат передачи данных будет удобен обоим но надо не забывать что есть определенные ситуации когда неправильный формат передачи приведет к тормозам.
Очень часто делают так что сервер передает даннные вложенными объектами
{
tasks: [
{
id: 1,
...
subTasks: [
{id: 1, ...},
{id: 2, ...}
]
},
{
id: 2,
...
subTasks: [
{id: 3, ...},
{id: 4, ...}
]
}
]
}
Хотя правильно передавать данные в плоском, нормализированном виде
{
tasks: {
1: {id: 1, ..., subTasks: [1, 2]},
2: {id: 2, ..., subTasks: [3, 4]}
...
},
subTasks: {
1: {...},
2: {...},
3: {...}
4: {...}
}
}
потому что когда связи между сущностями будут не one-to-many а many-to-many - например нужно передать юзера со списком его друзей и друзей его друзей то попытка передать данные через вложенные объекты приведет к тому что в окажется много дублей юзеров что приведет к мегабайтному json-у, медленной передаче по сети и тормозам как по парсингу так и по обработке.
зачем тебе плоские данные ? Они обычно если что то меняется быстро в массиве. А у тебя просто авторов обновить


Andrew
27.08.2018
16:20:53
проще Map сделать

Valeriy
27.08.2018
16:21:06
и таких становится с каждым днем все больше

Google

Игорь
27.08.2018
16:21:24

Valeriy
27.08.2018
16:22:00
Есть же normalizr
ну приходится выкручиваться в браузере само собой, всякие normalizr, redux-orm, denormalizr подтягивать
я вот с бакендеров требовал id-шки для записей логов

Alexey
27.08.2018
16:22:40

Valeriy
27.08.2018
16:22:42
они мне сказали что в базе айдишек нет у них :)))
как хочешь так и выкручивайся

Alexey
27.08.2018
16:22:55

Игорь
27.08.2018
16:23:04

Valeriy
27.08.2018
16:23:34
ну когда "исторически так сложилось" уже поздняк метаться

dima
27.08.2018
16:23:54

Valeriy
27.08.2018
16:24:26
вские фулстэки понапишут говнеца, подтянут модных хипсторских штук в проект, а после них все приходят и руками разводят :))
в итоге и бакенд так себе и фронт ни о чем

Игорь
27.08.2018
16:24:41

Alexey
27.08.2018
16:25:08
Про нормализацию тема норм раскрыта у Дэна Абрамова в курсе по редаксу

dima
27.08.2018
16:25:21
я что то сказал про другие данные ? Есть список. Есть место рендера. Он не меняется. ты нормализируешь что ли ?

Игорь
27.08.2018
16:25:38

Alexey
27.08.2018
16:26:29
https://egghead.io/lessons/javascript-redux-normalizing-api-responses-with-normalizr покажи бэкендеру :D

Kendr
27.08.2018
16:26:38

Игорь
27.08.2018
16:26:59