Size: a a a

GraphQL — русскоговорящее сообщество

2018 November 06

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
в обычных кверях + мутациях — одно соединение соответсвует одному запросу+ответу
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
а в подписках уже несколько
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
внутри этого "пула данных" (т.е. тупо большого массива данных) есть обсерверы на set данных, который просто оповещает, что данные поменялись
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
получается, что на руках всегда есть все данные + события о том, что какая-то нода поменялась
источник

MM

Maxim Makarov in GraphQL — русскоговорящее сообщество
То есть ты в памяти сервера держишь __typename + id объектов, которые сейчас у клиента в браузере подгружены?
источник

MM

Maxim Makarov in GraphQL — русскоговорящее сообщество
то есть всегда знаешь какой клиент на какие конкретно данные подписан?
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
А проблема в этих самых резолверах. Т.к. мне при каждом обновлении данных надо всегда прогонять это всё сквозь резолверы, чтобы отсечь ненужные поля, провалидировать ответ и прочее
источник

MM

Maxim Makarov in GraphQL — русскоговорящее сообщество
Kirill Nesmeyanov
А проблема в этих самых резолверах. Т.к. мне при каждом обновлении данных надо всегда прогонять это всё сквозь резолверы, чтобы отсечь ненужные поля, провалидировать ответ и прочее
то есть ты в резолверы посылаешь максимально возможный набор данных?
источник

MM

Maxim Makarov in GraphQL — русскоговорящее сообщество
в ивенте
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Maxim Makarov
То есть ты в памяти сервера держишь __typename + id объектов, которые сейчас у клиента в браузере подгружены?
да, это жрёт ну оооооооооооочень много памяти. Так что я думаю на счёт добавления холодного кеша. Т.е. сбрасывать посело первого формирования данных всё куда-нибудь в сторадж при желаннии, например в редис
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Maxim Makarov
то есть ты в резолверы посылаешь максимально возможный набор данных?
эм, не совсем, выглядит так:
источник

MM

Maxim Makarov in GraphQL — русскоговорящее сообщество
Kirill Nesmeyanov
эм, не совсем, выглядит так:
ну допустим у тебя один юзер подписан на a и b, второй подписан на c и d, при обновлении этого объекта ты посылаешь a + b + c + d ?
источник

MM

Maxim Makarov in GraphQL — русскоговорящее сообщество
а уже в резолверы отсылают клиенту только нужное
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
не, это надо рисовать
источник

MM

Maxim Makarov in GraphQL — русскоговорящее сообщество
а что если обновилось только поле c, клиенту, подписанному на a и b точно ничего не придет?
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Maxim Makarov
ну допустим у тебя один юзер подписан на a и b, второй подписан на c и d, при обновлении этого объекта ты посылаешь a + b + c + d ?
нене
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
я же сказал - одно соединение содержит несколько пулов данных
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
в ответ присылается тот, что обновился
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
объединять их нельзя же
источник

MM

Maxim Makarov in GraphQL — русскоговорящее сообщество
ты сейчас очень абстрактно описал, а я пытаюсь в деталях разобраться)
источник