как фильтровать input параметры по простому, также как это можно делать с резолверами через graphql-shield, но для мутаций, для input полей. В итоге была написана библиотека, позволяющая по заданной схеме фильтровать входящие параметры (args в коде) согласно заданной схеме, идея в следующем: описывается объект, структурно такой же как и input параметры но в котором содержатся не сами параметры, а только boolean значение, сохранять (true) или исключить параметр из аргументов мутации, причём через поле '*':true/false можно указать правило по умолчанию для неуказанных в схеме полей, а так же всех полей уровнями глубже (если только на более глубоких уровнях не было установлено новое правило по умолчанию, которое отменяет верхлежащее). Сама фильтрация происходит в созданном rule для graphql-shield. Пример работы данной библиотеки можно посмотреть здесь.
Так вот, что думаете насчёт такого метода, может есть предложения как можно упростить данное решение? Или всё херня и нужно юзать что-то другое?
Мне кажется, что graphql-shield/middleware - не очень хорошее место для фильтрации аргументов для мутаций, т.к. переиспользовать отдельные "правила" не сможешь, ведь редко бывает, что инпуты у разных мутаций одинаковые. Имхо, эту логику лучше держать прямо в резолвере, поближе к коду. Насколько часто возникает проблема фильтрации полей? Почему бы не сделать lodash.omit прямо в резолвере при условии, что пользователь не админ?
Обсуждают сегодня