Size: a a a

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

2018 April 16

M

Mikalai in GraphQL — русскоговорящее сообщество
Nikita Tkachuk
а на твою обёртку можно взглянуть ?)
Как-то так
источник

NT

Nikita Tkachuk in GraphQL — русскоговорящее сообщество
спасибо, ничего не понятно, но буду разбиратсья))
источник

M

Mikalai in GraphQL — русскоговорящее сообщество
Ну оно nest.js-специфично.
источник

M

Mikalai in GraphQL — русскоговорящее сообщество
Вот такой ответ получается
источник

К

Котяй Негодяй in GraphQL — русскоговорящее сообщество
Makar Stetsenko
На самом деле спецификация - это, наверное, самый важный документ, который надо прочитать прежде чем читать любой другой туториал
Чёт не очень связно написано. Возникакет больше вопросов, ответы на которые совсем не очевидно, где искать.
источник

К

Котяй Негодяй in GraphQL — русскоговорящее сообщество
А addUser — это в Query? =)
источник

MS

Makar Stetsenko in GraphQL — русскоговорящее сообщество
Котяй Негодяй
Чёт не очень связно написано. Возникакет больше вопросов, ответы на которые совсем не очевидно, где искать.
TLDR; По спеке GraphQL отвечает в формате { data: {...}, errors: {...} }, если запрос исполнился успешно, то errors быть не должно, если произошла ошибка не связанная с самим запросом, то errors должен содержать минимум один элемент
источник

MS

Makar Stetsenko in GraphQL — русскоговорящее сообщество
Короче говоря, в схеме ошибки никак не отражаются
источник

NT

Nikita Tkachuk in GraphQL — русскоговорящее сообщество
а apollo-link-error кто то пробовал?
https://www.apollographql.com/docs/react/features/error-handling.html
источник

К

Котяй Негодяй in GraphQL — русскоговорящее сообщество
Как мне в graphql-js вернуть несколько ошибок?
источник
2018 April 17

MS

Madi Sheriyev in GraphQL — русскоговорящее сообщество
Ребят всем привет. Столкнулся с такой задачей. попробую кратко изложить.
Возможно ли передача тех или иных схем и ресолверов в зависимости от роли пользователя (который получаю из request в graphqlExpress)?
источник

MS

Madi Sheriyev in GraphQL — русскоговорящее сообщество
Например есть схемы(с ресолверами) A B C D. Есть покупатель и продавец (определяю его на при запуске graphqlExpress). Теперь когда заходит покупатель, ему должна быть доступна только схема A и В, а если продавец, то А, C, D. Вся проблема в том, что когда я запускаю graphqlExpress и заходит покупатель. то подгружается схема A B. а когда заходит продавец, то схема не обновляется, т.к. graphqlExpress подгрузить новые схемы только после перезагрузки. В общем я пришел в выводу что генерить схемы ВНУТРИ graphqlExpress - это неправильно. его нужно передавать еще до запуска сервера. Но определить роль пользователя я могу только после запуска. Подскажите как решить эту задачу
источник

MS

Madi Sheriyev in GraphQL — русскоговорящее сообщество
В общем замучился как это делать. Единственное решение - использование директивов. Вот здесь хороший пример: https://launchpad.graphql.com/nxp1870jl7
источник

MS

Madi Sheriyev in GraphQL — русскоговорящее сообщество
Правда теперь проблема с ресолверами. Например: когда покупатель запрашивает query goods:
Query: {
goods(obj, args, context) {
 return GoodsCollection.find({buyerId: context.userId}).fetch()
}
}
а когда должен запрашивать продавец
Query: {
goods(obj, args, context) {
 return GoodsCollection.find({sellerId: context.userId}).fetch()
}
}
Но т.к. я вынужден мерджить ресолверы до запуска сервера приходится писать типа:
Query: {
goods(obj, args, context) {
 if (context.role == "buyer") {
  return GoodsCollection.find({buyerId: context.userId}).fetch()
 } else {
  return GoodsCollection.find({sellerId: context.userId}).fetch()
 }
 
}
}
источник

NT

Nikita Tkachuk in GraphQL — русскоговорящее сообщество
Madi Sheriyev а не подходит вариант просто возвращать ошибку с гиафкуэль сервера если нет доступа у какой то роли?
источник

NT

Nikita Tkachuk in GraphQL — русскоговорящее сообщество
Зачем прям схемы разные делать?
источник

MS

Madi Sheriyev in GraphQL — русскоговорящее сообщество
Вот как раз буду реализовать это через директивы. Просто я вообще хотел исключить подгрузку схем и ресолверов которые недоступны для определенной роли.
источник

NT

Nikita Tkachuk in GraphQL — русскоговорящее сообщество
На клиенте? А зачем?
источник

MS

Madi Sheriyev in GraphQL — русскоговорящее сообщество
Ну чтобы роль А не смог запустить Мутейшн который может запустить только роль B
источник

MS

Madi Sheriyev in GraphQL — русскоговорящее сообщество
ну и доку генерить тоже было бы удобно для каждой роли
источник