169 похожих чатов

Привет, чат! Может кто-то рассказать как решает проблему отстояной спецификации graphql

относительно nullability и undefinability полей?
https://github.com/graphql/graphql-spec/issues/476
https://github.com/graphql/graphql-spec/issues/542

Думаю, что в issue все можно прочитать, но кратко повторюсь тут.
Опциональность полей может означать:
* Что поле можно не передавать или обнулить его значение при помощи null
* Что поле можно не передавать, но нельзя обнулить
* Что поле должно быть обязательно передано, но может быть обнулено

Интересует полная картина решения проблемы как со стороны бэкенда, так и на фронтенде

3 ответов

14 просмотров

> Опциональность полей может означать: > * Что поле можно не передавать или обнулить его значение при помощи null > * Что поле можно не передавать, но нельзя обнулить > * Что поле должно быть обязательно передано, но может быть обнулено О хороший вопрос! У меня решается просто правилами, без директив и всяких или или – Если поле передано в переменных, то взять его значение и записать в базу. И все ньюансы уже закладывать в сами инпут типы. Для мутаций create - всегда явно помечать обязательные поля. Для update обязательные поля не помечать как NonNull, чтоб их можно было не передавать (не изменять). Если необходимо какие-то поля удалить, то заводим отдельную мутацию или отдельный аргумент, где явно передаем список полей на удаление. На практике, таких операци, где надо удалить поле у меня было очень мало. И просто обходились дополнительной мутацией. Я бы рекомендовал от общих кейсов перейти к конкретным, и вы увидите что это не настолько большая проблема. И 99% проектов с такой проблемой не сталкиваются, либо спокойно валидируются в рантайме, либо обходятся доп описанием в дискрипшене к мутации/аргументам. PS. Мир не идеален, но вы можете сделать идеальный дескрипшн для людей. И при небольшой сноровке, даже парсить эти дескрипшены на клиенте через интроспекцию. И тогда вам точно не нужны будут директивы. Накостыльте спецсимволы в описании 😉 Всяко лучше, чем в корне поля крутить как в аполо федерейшене.

Александр-Дербенёв Автор вопроса
Pavel @nodkz
> Опциональность полей может означать: > * Что пол...

Вариант с дескрипшнами тоже рассматривал, но почему-то пришел к тому, что нужно заставить работать директивы. А дополнительные мутации кажутся прям костылями и не очень хочется такое писать - но возможно дело лишь в личном подходе) Спасибо за развернутый ответ, определенно поможет в решении проблемы

Александр Дербенёв
Вариант с дескрипшнами тоже рассматривал, но почем...

В любом случае, двигайтесь по пути наименьшего сопротивления и дайте бизнесу быстрое решение. Красоту нереально навести. И тем более я ещё никого не встречал, кто бы хорошее Графкуэль апи сделал с первой попытки. И даже со второй. Дзен приходит, где-то после 3ретей версии АПИ. Поэтому шибко не тормозите, пилите. Ведь у вас впереди еще столько рефакторингов 😈

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта