Size: a a a

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

2020 September 21

DB

Dmitry Balitsky in GraphQL — русскоговорящее сообщество
Но если бы в своё время он не сделал гайд старт $contracts = Contract::all(); то всё, нету у нас больше джунов
источник

DB

Dmitry Balitsky in GraphQL — русскоговорящее сообщество
а мы все джуны)
источник

ПЧ

Павел Червов... in GraphQL — русскоговорящее сообщество
Vladimir Panimaskin
Да что вы человека отговариваете, полезное упражнение же =) Нужно из info выдрать все поля, не забыть про фрагменты, тут все инфа по SelectionSet https://spec.graphql.org/June2018/#sec-Selection-Sets.
Надо только правильно дерево обойти, пример в АСТЭксплорере, если не ошибся нигде, вполне валидный запрос. https://astexplorer.net/#/gist/e97fc4b1fa4f8febf439459c80657189/7ae38a290128b1ae1f574b7d10fa15bdcdf93ad7
источник

ПЧ

Павел Червов... in GraphQL — русскоговорящее сообщество
Dmitry Balitsky
а мы все джуны)
+1
источник

АР

Алексей Родионов... in GraphQL — русскоговорящее сообщество
@paulcervov Кстати, PostGraphile (конкурент Prisma) под капотом для задачи проекции полей юзает https://www.npmjs.com/package/graphql-parse-resolve-info
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Я за 50 строчек кода вытаскиваю из 4го аргумента info, все поля которые запросил юзер и засовываю их в проджекшн монги или селект постгри – и дергаю только то что нужно.

Вот пример
https://github.com/graphql-compose/graphql-compose/blob/bf28343a9472d7ebb6bb327e9ee4a78330dd96d6/src/utils/projection.js#L41-L88
источник

ПЧ

Павел Червов... in GraphQL — русскоговорящее сообщество
Алексей Родионов
@paulcervov Кстати, PostGraphile (конкурент Prisma) под капотом для задачи проекции полей юзает https://www.npmjs.com/package/graphql-parse-resolve-info
Спасибо! Значи еще одна либа есть! Посмотри как будет время graphql-fields интересно тоже самое это или нет и что ты про нее скажешь
источник

ПЧ

Павел Червов... in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Я за 50 строчек кода вытаскиваю из 4го аргумента info, все поля которые запросил юзер и засовываю их в проджекшн монги или селект постгри – и дергаю только то что нужно.

Вот пример
https://github.com/graphql-compose/graphql-compose/blob/bf28343a9472d7ebb6bb327e9ee4a78330dd96d6/src/utils/projection.js#L41-L88
Павел, спасибо!

Поперло, начали решения скидывать 😄
источник

AB

Aleksandr Bukhalo in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Я за 50 строчек кода вытаскиваю из 4го аргумента info, все поля которые запросил юзер и засовываю их в проджекшн монги или селект постгри – и дергаю только то что нужно.

Вот пример
https://github.com/graphql-compose/graphql-compose/blob/bf28343a9472d7ebb6bb327e9ee4a78330dd96d6/src/utils/projection.js#L41-L88
Пока ты далеко не убежал, есть в graphql-compose что-то, чтобы собирает типы из классов, на манер type-graphql?
источник

АР

Алексей Родионов... in GraphQL — русскоговорящее сообщество
Павел Червов
Спасибо! Значи еще одна либа есть! Посмотри как будет время graphql-fields интересно тоже самое это или нет и что ты про нее скажешь
https://www.npmjs.com/package/graphql-parse-resolve-info основана на graphql-fields. graphql-fields заброшена и многого не умеет, что умеет graphql-parse-resolve-info.
источник

ПЧ

Павел Червов... in GraphQL — русскоговорящее сообщество
Алексей Родионов
https://www.npmjs.com/package/graphql-parse-resolve-info основана на graphql-fields. graphql-fields заброшена и многого не умеет, что умеет graphql-parse-resolve-info.
🙏
источник

АР

Алексей Родионов... in GraphQL — русскоговорящее сообщество
И я не уверен, что проекция полей у @nodkz за 50 строк учитывает все corner cases, которые описаны в ReadMe https://www.npmjs.com/package/graphql-parse-resolve-info. :)
источник

АР

Алексей Родионов... in GraphQL — русскоговорящее сообщество
Во-первых, поле может быть переименовано с помощью alias
источник

АР

Алексей Родионов... in GraphQL — русскоговорящее сообщество
Во-вторых фрагменты
источник

DB

Dmitry Balitsky in GraphQL — русскоговорящее сообщество
Наверное скорее человек показал как он это делает для своих специфических нужд)
источник

DB

Dmitry Balitsky in GraphQL — русскоговорящее сообщество
А вы сразу про пятую октаву и академический треск
источник

АР

Алексей Родионов... in GraphQL — русскоговорящее сообщество
Note that because GraphQL supports interfaces a resolver may return items of different types. For this reason, we key the fields by the GraphQL type name of the various fragments that were requested into the fieldsByTypeName field.

Once you know which specific type the result is going to be, you can then use this type (and its interfaces) to determine which sub-fields were requested - we provide a simplifyParsedResolveInfoFragmentWithType helper to aid you with this. In many cases you will know what type the result will be (because it can only be one type) so you will probably use this helper heavily.
источник

АР

Алексей Родионов... in GraphQL — русскоговорящее сообщество
Dmitry Balitsky
Наверное скорее человек показал как он это делает для своих специфических нужд)
Я лишь предупредил, что в 50 строк всего не учесть. )
источник

DB

Dmitry Balitsky in GraphQL — русскоговорящее сообщество
Наверное вы можете быть правы или ошибаться, возможно стоит проверить...
источник

DB

Dmitry Balitsky in GraphQL — русскоговорящее сообщество
Одна строка)
источник