Это обязанность авторов преобразователя.
Вы можете сравнить его с аргументами общей функции и возвращаемым результатом. В graphQL оба строго определены / типизированы.
В этом случае для запроса allMarkdownRemark
у вас есть
allMarkdownRemark(
filter: MarkdownRemarkFilterInput
limit: Int
skip: Int
sort: MarkdownRemarkSortInput
): MarkdownRemarkConnection!
... поэтому возможные аргументы - только filter
, limit
, skip
и sort
. Аргумент filter
также имеет определенную форму - он должен быть типа MarkdownRemarkFilterInput
. Вы можете использовать свойства, определенные в этом типе, только для аргумента filter
.
Это сделано специально, именно так дизайнер создал резольвер и его намерения о том, как и какие аргументы обрабатываются.
Это похоже на нумерацию страниц - вам не нужно использовать какие-либо поля результатов в качестве аргументов, поскольку skip
и limit
для уровня записи. Таким образом, эти аргументы вообще не связаны с полями. Они используются для некоторых логи c в резольвере. Аргумент filter
используется для логики c, тоже ... но это решение разработчика, чтобы выбрать и охватить варианты использования фильтрации .
Невозможно покрыть все мыслимые фильтры на всех обработанных слои данных и свойства, ... для parent
вы можете использовать только свойства и подвойства children
, id
, internal
и parent
(вы можете исследовать их на игровой площадке).
Конечно, недостаточно расширить определение типа, чтобы оно работало с другим аргументом - речь идет о коде для его обработки .
Если вам нужна другая фильтрация логи c, вы можете написать свой собственный преобразователь (или изменить разветвленный проект gatsby) для ваших типов файлов или другого источника.