Сложные булевы запросы Graphql
Я понимаю принципы запроса через graphql из документов, которые вы можете искать:
{
"hero": {
"name": "R2-D2"
}
}
но как насчет того, чтобы сделать что-то более сложное, например:
{
"hero": {
"name": "R2-D2 AND C-3PO AND BB-8 NOT K-2SO"
}
}
Есть ли способ передать строку, как это и получить соответствующие результаты?
1 ответ
Нет, нет
Вы можете прочитать спецификацию GraphQL и посмотреть, что она делает, а что нет. В частности, спецификация не определяет какой-либо вид фильтрации, какой-либо язык выражений или какой-либо логический комбинатор. (Нет собственного способа сказать эквивалент SQL WHERE NAME='foo'
без резольвера поля, явно добавляющего его.)
То, что GraphQL допускает для аргументов поля, достаточно открыто, так что вы можете создавать более богатые запросы, но это очень специфично для некоторых приложений или библиотек. Двумя яркими примерами являются API GitHub GraphQL (который имеет тенденцию разрешать запросы с точным соответствием для выбранных полей, но не более богатый) и API Prisma (который имеет многоуровневую схему объектов для репликации запросов SQL).