Я использую библиотеку lacinia для моего сервера GrapQL Clojure.
Для этой простой схемы:
input QueryConfig {
startDate: String!
endDate: String!
}
type MyData{
x: Float!
y: Float!
z: Float!
}
schema {
query: Query
}
type Query {
myQuery(config:QueryConfig) : [MyData]
}
Я отправляю следующий запрос:
{
myQuery(config:{startDate:"2020-01-01",endDate:"2020-01-01"}){
x
}
}
В моем коде распознавателя я хотел бы знать, какие поля были запрошены (x в приведенном выше примере), поэтому я не буду перебирать результаты из моей БД и извлекать только значения x .
В коде распознавателя контекст содержит ключ : graphql-query , который содержит весь запрос. Однако синтаксический анализ текста запроса кажется неудобным.
(defn my-resolver
[context args value]
;TODO find out what fields were asked and fetch from DB
)
Каким будет правильный способ получения полей запроса?