Size: a a a

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

2021 September 24

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
кстати, судя по видео на канале Apollo на YouTube'е, спикеры как один советуют поменьше required ! полей, нечто аналогичное, кстати, с gRPC API, это объясняется минимизацией ошибок, а также заявляется, что клиент не должен доверять серверу и ему лучше стоит всё проверять, так проще менять схему при необходимости, а ещё если и случится потеря данных, то это будет нечто локальное, а не глобальная ошибка на весь сайт
источник

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
это я к "3.2. Делайте поля обязательными NonNull, если данные в поле возвращаются при любой ситуации."
источник

Д

Дмитрий in GraphQL — русскоговорящее сообщество
Привет.
Есть пользователь, у него есть Name, Surname, Email, Password, etc.
Нужна страница с возможностью изменять каждое поле. По идеи, пользователь может захотеть изменить все или что-то одно.
Вопрос следующий: Желательно писать одну мутацию и посылать поля, которые изменяются, соответственно делать Nullable остальные или писать для каждого поля мутацию? Во втором случае, как я понимаю,  нужно будет посылать oldPassword или токен, чтобы разрешить изменить, хотя, наверное, можно для всего namespace  отправить аргументом.
Вопрос возник из-за прочтения подхода namespace в мутациях.
Спасибо.
источник

DP

Dmitriy Pikulin in GraphQL — русскоговорящее сообщество
Привет, может кто знает, почему когда я использую union тип в query я не могу запросить поля которые есть во всех случаях
например у меня есть

type User1 {
 name: String
 hasChildren: Boolean
}

type User2 {
 name: String
 age: Int
}

union User = User1 | User2

и почему я не могу сделать так

query MyUser {
   User {
     __typename
     name

     ... on User1 {
       hasChildren
     }

     ... on User2 {
       age
     }
   }
 }

своиство name есть во всех случаях, значит оно точно там есть, почему graphql не позволяет такое делать, и может быть есть способ чтобы делать такие запросы было бы можно?
источник

𝘂

𝘂𝘅𝗻𝗮𝗺𝗲... in GraphQL — русскоговорящее сообщество
лучше 1й вариант, общая мутация, а поля которые юзер не указал (undefined) не обновлять (многие orm и не обновляют undefined поля). Токен естественно нужно посылать, а иначе как понять кому вообще нужно менять поля
источник

𝘂

𝘂𝘅𝗻𝗮𝗺𝗲... in GraphQL — русскоговорящее сообщество
не скажу почему так нельзя (потому что потому :). Так придумали, так сделали, наверное для упрощения логики. Способа нет, нужно указывать в обоих фрагментах что нужно получить от сервера
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Нужноно бэкендеров попросить заюзать Intarface для этого дела, вместо Union
источник

DP

Dmitriy Pikulin in GraphQL — русскоговорящее сообщество
а как именно интерфейс поможет?
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
в нем указываются общие поля для всех типов
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
их их можно запросить без фрагментов
источник

Д

Дмитрий in GraphQL — русскоговорящее сообщество
Про токен понятно, да. Были сомнения про отдельные мутации. Спасибо за мнение)
источник

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
если следовать советам спикеров на канале Apollo, то несколько мутаций (отдельно под каждую задачу) лучше одной с кучей опциональных полей, то есть вместо updateUser updateUserName и так далее
источник

Д

Дмитрий in GraphQL — русскоговорящее сообщество
Эх, мнения разделились)
После прочтения статьи Павла, сложилось такое же мнение.
источник

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
я не говорю, что этот вариант именно правильный, я просто вижу, что его этот подход советуют в видео на YouTube канале Apollo
источник

Д

Дмитрий in GraphQL — русскоговорящее сообщество
+
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Не совсем так. Разделять надо по сущностям. Тут выше был пример у парнишки где при обновлении пользователя обновлялись и роли. Вот такие вещи надо разделять обязательно.
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
А на каждое поле по мутации спикеры не говорили
источник

Д

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

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Ну у вас есть модель пользователя. Есть внешние связи. Роли это часть пользователя, но не часть модели. Это связанная сущность.
источник

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
я посмотрел много видеороликов и где-то там оно было) где именно не смогу дать пруф сейчас потому что не особо запоминал, был совет вида "вместо одного mutation с update всех полей на сущность лучше несколько mutations под конкретные задачи" и на экране был какой-то похожий код)

если что, я не поддерживаю именно эту точку зрения (как и не поддерживаю противоположную ей), я пока не определился) it depends, наверное)
источник