I am working on application that has to query graphql to fetch data, but when i combine list of DocumentNodes into single DocumentNode using concat_ast provided by graphql, I m receving the following error graphql.error.graphql_error.GraphQLError: This anonymous operation must be the only defined operation
I know the reason why this is happening, here is the example of what is happening when i combine the querys, the concat function is adding extra braces around each named operation, which is a incorrect graphql query syntax
Combined query
{
table1: fetchTable1(
id: [5, 45]
perPage: 5
currentPage: 1
) {
data {
id
name
}
}
}
{
table2: fetchTable2(table1_id: [5, 45], perPage: 5, currentPage: 1) {
data {
id
customer
}
}
}
Individual Query, table2 is its named operation
{
table2: fetchTable2(table1_id: [5, 45], perPage: 5, currentPage: 1) {
data {
id
customer
}
}
}
But i need the combined result to be in the following format, so that all operations will be named, I have also tried this query in apollo graphql UI, and it works, but i could not generate one using concat in python, is there any other ways i could comibne multiple DocumentNodes without affecting the existing named operations.
{
table1: fetchTable1(
id: [5, 45]
perPage: 5
currentPage: 1
) {
data {
id
name
}
}
table2: fetchTable2(table1_id: [5, 45], perPage: 5, currentPage: 1) {
data {
id
customer
}
}
}
I have tried using concat_ast function provided by graphql, I also have a workaround in place which is to not create DocumentNodes per each table before and combinne all the tables dict at the end and craete a single DocumentNode, but it would be better to let graphql combine DocumentNodes into one or if any other better solutions than mine as i might need to fetch individual tables in other parts of my application.
We can using graphql-query package for combine GraphQL queries in python.
Code
The result is
And creating
DocumentNode: