Size: a a a

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

2019 July 14

FM

Fedor Moroseev in GraphQL — русскоговорящее сообщество
Кирилл
да, эта актуальная тема. потому что я все что посмотрел в сети. выдало лишь скудные примитивы на тему RBAC.

А сравнения со 100 обращений к RBAC сервису не совсем корректно, потому что сервис может быть частью всей системы и модифицировать запросы. Достаточно элементарная штука, кстати и все запросы начинают работать ещё быстрее, т.к. там идет запрос по +1 индексу и ограничивает выборку.
Ну и есть системы. где RBAC на уровне описания данных организован и при запуске сервиса он тоже висит в памяти. Т.е. REST не ограничивается отдельным RBAC сервисом.

Однако это все про уровень безопасности сервиса. А самая проблемная часть это синхронизация знаний описания правил RBAC на сервере и согласование его с интерфейсом.
Другими словами, нужно при разработке интерфейса помнить что из запроса полей множества (A,B,C) тебе может вернуться любое подмножество. И тут начинается сильное  усложнение логики из-за этих ограничений.
А GraphQL как бы был призван упростить построение интерфейса (упростить поток данных на клиенте). Т.е. мы поулчаем что основная цель не достигается. А сервер для GraphQL серьёзно сложнее чем для REST.

Резюме, поулчаем что упростить клиентскую часть не удалось, а серверную усложнили. Вилы.
Я пока что сижу и жду, пока кто-то методологию в этом направлении разработает, но что-то мне кажется не дождусь :(
Я пишу собственную либу и близкую к oauth 2
источник

e

egoarka in GraphQL — русскоговорящее сообщество
тут проблему не на уровне type-graphql решать нужно, там хакать граф сам нужно

потому что сам автор библы ссылается на то что это антипаттерн и как бы не советует использовать нестед мутации

хотя каждый сам для себя решает, если не останавливает, то можно хакнуть)))
источник

AB

Aleksandr Bukhalo in GraphQL — русскоговорящее сообщество
egoarka
тут проблему не на уровне type-graphql решать нужно, там хакать граф сам нужно

потому что сам автор библы ссылается на то что это антипаттерн и как бы не советует использовать нестед мутации

хотя каждый сам для себя решает, если не останавливает, то можно хакнуть)))
на гитхабе нагуглил, что автор намекает, что так делать не нужно, но какого-то решения не нашёл. Так и не понял, можно с type-graphql такое сделать или нет. В других вариантах это в полтыка решается resolver: () => ({})
источник
2019 July 15

VS

Vladyslav Siroshtan in GraphQL — русскоговорящее сообщество
Есть такая проблема.
Сделал schema stitching, и теперь нужно на тип повесить директиву, но доступа к sdl нету, т.к. автоматически генерится со стороннего ресурса.

Как мне повесить директиву к GraphQLSchema ? Каким-то мапером и трансформером чтоли
источник
2019 July 16

e

egoarka in GraphQL — русскоговорящее сообщество
Vladyslav Siroshtan
Есть такая проблема.
Сделал schema stitching, и теперь нужно на тип повесить директиву, но доступа к sdl нету, т.к. автоматически генерится со стороннего ресурса.

Как мне повесить директиву к GraphQLSchema ? Каким-то мапером и трансформером чтоли
там вроде при мердже схем можно пошаманить, не пробовал?
источник

VS

Vladyslav Siroshtan in GraphQL — русскоговорящее сообщество
egoarka
там вроде при мердже схем можно пошаманить, не пробовал?
Так от мне и нужно понять как)
источник
2019 July 17

m

m^^combat in GraphQL — русскоговорящее сообщество
Всем привет
источник

m

m^^combat in GraphQL — русскоговорящее сообщество
в graphql-compose addRelation работает только на форейн поле id ?
источник

m

m^^combat in GraphQL — русскоговорящее сообщество
Product.addResolver({
   name: 'findBySlugs',
   type: Product,
   args: { slugs: '[String]' },
   resolve: async ({ source, args, context, info }) => {
     const data = await Product.find({ slug: { $in: args.slugs } })
     console.log('data', data)
     return data
   }
 })

BrandTC.addRelation('existingProducts', {
   resolver: () => Product.getResolver('findBySlugs'),
   prepareArgs: {
     slugs: source => source.products
   },
   projection: { products: true }
 })
источник

m

m^^combat in GraphQL — русскоговорящее сообщество
в консоли вызывается резолвер, с датой все впорядке:
data [ { _id: 5d2ed0695803121a0e9c2d18, slug: 'product1', __v: 0 },
 { _id: 5d2ed0695803121a0e9c2d19, slug: 'product2, __v: 0 } ]


а в ответе graphql
"existingProducts": {
   "slug": null
 },
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
m^^combat
Product.addResolver({
   name: 'findBySlugs',
   type: Product,
   args: { slugs: '[String]' },
   resolve: async ({ source, args, context, info }) => {
     const data = await Product.find({ slug: { $in: args.slugs } })
     console.log('data', data)
     return data
   }
 })

BrandTC.addRelation('existingProducts', {
   resolver: () => Product.getResolver('findBySlugs'),
   prepareArgs: {
     slugs: source => source.products
   },
   projection: { products: true }
 })
Накосячил с возаращаемым типом. Должно быть:

Type: [Product]
источник

m

m^^combat in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Накосячил с возаращаемым типом. Должно быть:

Type: [Product]
спасибо огромное 🤓
источник

BS

Bogdan Shelomanov in GraphQL — русскоговорящее сообщество
подскажите в аполо связка с реактом, есть ли возможность обработать ответы? тоесть именно как миделвару сделать, что бы все запросы проходили через нее? например если в ответе error, что то сделать
источник

A

Artur in GraphQL — русскоговорящее сообщество
Bogdan Shelomanov
подскажите в аполо связка с реактом, есть ли возможность обработать ответы? тоесть именно как миделвару сделать, что бы все запросы проходили через нее? например если в ответе error, что то сделать
источник

A

Artur in GraphQL — русскоговорящее сообщество
думаю Afterware и Middleware то что тебе нужно
источник

A

Artur in GraphQL — русскоговорящее сообщество
в роли интерцпеторов
источник

BS

Bogdan Shelomanov in GraphQL — русскоговорящее сообщество
я вот смотрю, что то такое вроде как есть
источник

BS

Bogdan Shelomanov in GraphQL — русскоговорящее сообщество
а вот как считается хорошая практика, чекать на уровне миделвары наличие токена, или в компоненте рутовом рендер при наличии ошибки рендер делать?
источник

BS

Bogdan Shelomanov in GraphQL — русскоговорящее сообщество
и вот еще, сейчас такое делают? типо если нету сокетов, а нагрузка точно на проект будет минимальная, вот так отправлять запрос?
источник

SZ

Sergey Zubtsov in GraphQL — русскоговорящее сообщество
Никак не могу найти ссылку на репу со статьями по graphql , может у кого есть под рукой?
источник