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

Общаемся на темы, посвященные GraphQL и опыту его использования. Проблемы. Новости. Решения. Вам могут быть полезны: @apollo_ru, @react_js, @vuejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание в чате было полезным и комфортным.

352 members

Архив канала @graphql_ru 27 июня 2018 г.

04:18:02 ДП
User 119990994
У меня авторизация с помощью никнейма или мыла, поэтому обязательным параметром должен быть один из них. Как это можно сделать в такой мутации?

login(email: String nickname: String password: String!): AuthPayload!
04:18:37 ДП
User 119990994
я, правда, уже догодался что можно заменить это просто на login и принимать там либо мыло, либо никнейм, но все же)
05:32:20 ДП
User 148736774
User 119990994
я, правда, уже догодался что можно заменить это просто на login и принимать там либо мыло, либо никнейм, но все же)
Ну да, все равно на сервере данные валидировать
05:33:58 ДП
User 119990994
Угу, но все же хотелось бы знать есть ли что-то типа оператора OR
05:34:13 ДП
User 119990994
Email or Nickname: String!
06:12:50 ДП
User 119990994
Как можно переписать незакомментированый код с помощью одного запроса?
Пробовал сделать как в закомментированном примере, но получил такую ошибку: Field "OR" is not defined by type UserWhereUniqueInput.

https://gist.github.com/SilencerWeb/a376b66a519c092e8bdeb8b98dede422
02:10:18 ПП
User 324326717
Здравствуйте. Я использую Django + GraphQL. У меня есть задача сделать регистрацию по email (сделано), отслыка письма с токеном подтвержения email с последующим заданием пароля. Я знаю, что есть graphql_jwt, но это для авторизации. Есть какие-нибудь best practice подтверждения и генерирования confirmation token'а?
02:25:23 ПП
User 144022504
User 324326717
Здравствуйте. Я использую Django + GraphQL. У меня есть задача сделать регистрацию по email (сделано), отслыка письма с токеном подтвержения email с последующим заданием пароля. Я знаю, что есть graphql_jwt, но это для авторизации. Есть какие-нибудь best practice подтверждения и генерирования confirmation token'а?
Тоже на этой теме сейчас. У Prisma  есть решение. Должно быть как-то по аналогии.
https://github.com/Volst/prisma-auth
github.com/Volst/prisma-auth
prisma-auth - 🔑 Authentication services for Prisma (GraphQL).
04:56:45 ПП
User 124962553
А принято вообще использовать apollo-link-state? Пытаюсь его прикрутить и пока только куча вопросов.
04:57:03 ПП
User 207858668
User 124962553
А принято вообще использовать apollo-link-state? Пытаюсь его прикрутить и пока только куча вопросов.
Мы используем
04:58:25 ПП
User 124962553
Допустим есть,   список товаров(с бека) и есть что-то вроде корзины(локально). Объявляю в запросе товара поле isSaved c @client. И не совсем понимаю как этот флаг обновить в кеше
04:59:12 ПП
User 124962553
получается только через writeQuery, при чем если перезаписывать именно весь запрос для товара
05:00:07 ПП
User 124962553
Както можно заставить apollo заново вызвать резолвер для локального поля?
05:02:41 ПП
User 207858668
недавно на эту проблему тоже натолкнулся
05:02:49 ПП
User 124962553
удалось решить?
05:02:59 ПП
User 207858668
адекватного решения не нашел
просто заапдейтил фрагмент
05:03:25 ПП
User 207858668
т.к. резолвер вызывается при получении данных с сервера, насколько я понимаю
05:04:11 ПП
User 207858668
если найдешь нормальное решение, то поделись, пожалуйста
05:04:25 ПП
User 124962553
Получается мне нужно апдейтить фрагмент с флагом, и апдейтить запрос на всю корзину?
05:05:33 ПП
User 207858668
я просто этот флаг в фрагменте апдейтил и все
05:06:09 ПП
User 124962553
но если список товаров в корзине отдельно нужен, получается его тоже надо апдейтить
05:07:40 ПП
User 207858668
так при апдейте фрагмента у тебя лист сам должен заапдейтиться, если он содержит этот фрагмент
05:09:08 ПП
User 124962553
ок. спасибо почитаю про апдейт фрагмента
05:26:03 ПП
User 119754639
Ребят, есть какое-то решение из коробки в graphql для n+1 проблемы?
05:33:24 ПП
User 124962553
User 119754639
Ребят, есть какое-то решение из коробки в graphql для n+1 проблемы?
из коробки вроде нет. На ноде вроде решается, пробрасыванием в контекст специльного загрузчика. Который агригирует все запросы, и на следующем тике запускает как один
05:49:28 ПП
User 119754639
User 124962553
из коробки вроде нет. На ноде вроде решается, пробрасыванием в контекст специльного загрузчика. Который агригирует все запросы, и на следующем тике запускает как один
Не очень понял. Имеется в виду, что он запасы к базе пробросит батчем или как?
06:22:57 ПП
User 341172775
User 119754639
Не очень понял. Имеется в виду, что он запасы к базе пробросит батчем или как?
https://dev-blog.apollodata.com/securing-your-graphql-api-from-malicious-queries-16130a324a6b

Это не то?
dev-blog.apollodata.com/securing-your-graphql-api-from-malicious-queries-16130a324a6b
Working with GraphQL is amazing, but also has complex security implications. Let’s dig into some essential protections for your API.
06:25:49 ПП
User 341172775
А я чот сегодня ещё задумплся, если мы в приложении с фронта тянем данные, геты наши видны юзверям, по парочке страниц в принципе можно построить представление о схеме, и соответственно если очень захочет пользователь он же ведь сможет как раз заруинить бэк n+1
06:26:03 ПП
User 341172775
Как то это решается?
06:30:01 ПП
User 206966715
User 341172775
Как то это решается?
https://www.npmjs.com/package/graphql-depth-limit

Мы пока вот этот пластырь прилепили
npmjs.com/package/graphql-depth-limit
Limit the complexity of your GraphQL queries based on depth.
06:32:32 ПП
User 341172775
Да, я про него тоже выше ссылку кинул, единственное что, пользователю слишком много видно зараза :( в rest'e кажется что глубже как то спрятано
06:34:37 ПП
User 341172775
@izatop ты плохой если честно, подсадил на классные технологии и стек, а   встречаются на работе они редко...)
07:40:59 ПП
User 118101903
User 341172775
А я чот сегодня ещё задумплся, если мы в приложении с фронта тянем данные, геты наши видны юзверям, по парочке страниц в принципе можно построить представление о схеме, и соответственно если очень захочет пользователь он же ведь сможет как раз заруинить бэк n+1
А не чёрез граф заруинить не получится?  Тем более, что вычислять структуру БД по запросам к прослойке - это занятие такое себе. Кмк, целенаправленно такое сделать сложновато, если бэк грамотно настроил все...
08:35:11 ПП
User 341172775
User 118101903
А не чёрез граф заруинить не получится?  Тем более, что вычислять структуру БД по запросам к прослойке - это занятие такое себе. Кмк, целенаправленно такое сделать сложновато, если бэк грамотно настроил все...
Ну ты же видел get запросы к графкуэль серверу?
08:59:14 ПП
User 118101903
User 341172775
Ну ты же видел get запросы к графкуэль серверу?
Ну да. Я еще в ряде докладов/подкастов слышал об этом узком месте. Разве не логично исключать рекурсию, настраивать корсы  и все такое заранее?
09:03:50 ПП
User 135278254
у graphql интроспектируемая схема
09:03:58 ПП
User 135278254
поэтому даже не надо пару гет-запросов
09:04:05 ПП
User 135278254
можно просто сразу запросить всю схему
09:04:28 ПП
User 135278254
User 341172775
А я чот сегодня ещё задумплся, если мы в приложении с фронта тянем данные, геты наши видны юзверям, по парочке страниц в принципе можно построить представление о схеме, и соответственно если очень захочет пользователь он же ведь сможет как раз заруинить бэк n+1
☝️
09:05:12 ПП
User 206966715
Можно вот так на коленке исключить лишнее
09:06:29 ПП
User 206966715
(размер табов не я расставлял)
09:31:17 ПП
User 124962553
User 341172775
А я чот сегодня ещё задумплся, если мы в приложении с фронта тянем данные, геты наши видны юзверям, по парочке страниц в принципе можно построить представление о схеме, и соответственно если очень захочет пользователь он же ведь сможет как раз заруинить бэк n+1
где-то читал что facebook ни шлет все тело запроса в проде. Они просто создают при сборке прода уникальный id для каждого запроса и юзают их. Канает правда только для случая если апи закрытое
09:39:23 ПП
User 324326717
Подскажите плс отличие mutate и mutate_and_get_payload
Использую graphene на django