I've not encountered this before, but simply 1 mutation will create 2 entries:
scheme.json:
{
"name": "createAdminConfigCategory",
"description": "Creates a single `AdminConfigCategory`.",
"args": [
{
"name": "input",
"description": "The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields.",
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "INPUT_OBJECT",
"name": "CreateAdminConfigCategoryInput",
"ofType": null
}
},
"defaultValue": null
}
],
"type": {
"kind": "OBJECT",
"name": "CreateAdminConfigCategoryPayload",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
},
{
"kind": "INPUT_OBJECT",
"name": "CreateAdminConfigCategoryInput",
"description": "All input for the create `AdminConfigCategory` mutation.",
"fields": null,
"inputFields": [
{
"name": "clientMutationId",
"description": "An arbitrary string value with no semantic meaning. Will be included in the\npayload verbatim. May be used to track mutations by the client.",
"type": {
"kind": "SCALAR",
"name": "String",
"ofType": null
},
"defaultValue": null
},
{
"name": "adminConfigCategory",
"description": "The `AdminConfigCategory` to be created by this mutation.",
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "INPUT_OBJECT",
"name": "AdminConfigCategoryInput",
"ofType": null
}
},
"defaultValue": null
}
],
"interfaces": null,
"enumValues": null,
"possibleTypes": null
},
{
"kind": "OBJECT",
"name": "CreateAdminConfigCategoryPayload",
"description": "The output of our create `AdminConfigCategory` mutation.",
"fields": [
{
"name": "clientMutationId",
"description": "The exact same `clientMutationId` that was provided in the mutation input,\nunchanged and unused. May be used by a client to track mutations.",
"args": [],
"type": {
"kind": "SCALAR",
"name": "String",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "adminConfigCategory",
"description": "The `AdminConfigCategory` that was created by this mutation.",
"args": [],
"type": {
"kind": "OBJECT",
"name": "AdminConfigCategory",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "query",
"description": "Our root query field type. Allows us to run any query from our mutation payload.",
"args": [],
"type": {
"kind": "OBJECT",
"name": "Query",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "adminConfigCategoryEdge",
"description": "An edge for our `AdminConfigCategory`. May be used by Relay 1.",
"args": [
{
"name": "orderBy",
"description": "The method to use when ordering `AdminConfigCategory`.",
"type": {
"kind": "LIST",
"name": null,
"ofType": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "ENUM",
"name": "AdminConfigCategoriesOrderBy",
"ofType": null
}
}
},
"defaultValue": "[PRIMARY_KEY_ASC]"
}
],
"type": {
"kind": "OBJECT",
"name": "AdminConfigCategoriesEdge",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
}
],
"inputFields": null,
"interfaces": [],
"enumValues": null,
"possibleTypes": null
},
Data before mutation:
{
"data": {
"allAdminConfigCategories": {
"edges": []
}
}
}
Mutation:
mutation something($name: String!) {
createAdminConfigCategory(input: { adminConfigCategory: { name: $name } }) {
query {
allAdminConfigCategories {
edges {
node {
id
}
}
}
}
}
}
Variables
{ "name": "Jamie" }
Data after mutation:
{
"data": {
"createAdminConfigCategory": {
"query": {
"allAdminConfigCategories": {
"edges": [
{
"node": {
"id": 42
}
},
{
"node": {
"id": 43
}
}
]
}
}
}
}
}
I execute these queries in graphiql:
You're not creating two entries here; your mutation:
mutation something($name: String!) {
createAdminConfigCategory(input: { adminConfigCategory: { name: $name } }) {
query { # < Here's the issue
allAdminConfigCategories {
edges {
node {
id
}
}
}
}
}
}
is requesting the query
field on the mutation payload, which gives you access to the entire GraphQL schema again. You're then using that to query allAdminConfigCategories
which will give you all of the admin config categories you're allowed to see (not just the one you just created).
The mutation you want is probably more like this:
mutation something($name: String!) {
createAdminConfigCategory(input: { adminConfigCategory: { name: $name } }) {
adminConfigCategory {
id
}
}
}
Here we're just querying the newly created AdminConfigCategory directly from the mutation payload.