Neo4j-graphql-js: Fields outside of inline fragments missing from generated cypher

Created on 12 Sep 2019  路  1Comment  路  Source: neo4j-graphql/neo4j-graphql-js

Plugged in the schema below into the grand-stack-starter api

type Player implements TeamMember {
  id: ID!
  name: String
  number: Int
}

type Coach implements TeamMember {
  id: ID!
  name: String
  role: String
}

type Team {
  name: String
  members: [TeamMember] @relation(name: "ON_TEAM", direction: "IN")
}

type Query {
  teamByName(name: String): Team
    @cypher(statement: "MATCH (n:Team{name:$name}) RETURN n")
}

Running the following queries I find that query1 works and query2 doesn't:

query1 (works):

query {
  teamByName(name:"Warriors"){
    name
    members{
      ... on Player {
        id
        name
        number
      }
      ... on Coach {
        id
        name
        role
      }
    }
  }
}

generated cypher:

WITH apoc.cypher.runFirstColumn("MATCH (n:Team{name:$name}) RETURN n", {offset:$offset, first:$first, name:$name}, True) AS x UNWIND x AS `team` RETURN `team` { .name ,members: [(`team`)<-[:`ON_TEAM`]-(`team_members`) | team_members {FRAGMENT_TYPE: labels(team_members)[0],  .id , .name , .number , .id , .name , .role }] } AS `team`
{
  "offset": 0,
  "first": -1,
  "name": "Warriors"
}

query2 (errors):

query {
  teamByName(name:"Warriors"){
    name
    members{
      id
      name
      ... on Player {
        number
      }
      ... on Coach {
        role
      }
    }
  }
}

generated cypher:

WITH apoc.cypher.runFirstColumn("MATCH (n:Team{name:$name}) RETURN n", {offset:$offset, first:$first, name:$name}, True) AS x UNWIND x AS `team` RETURN `team` { .name ,members: [(`team`)<-[:`ON_TEAM`]-(`team_members`) | team_members {FRAGMENT_TYPE: labels(team_members)[0],  .number , .role }] } AS `team`
{
  "offset": 0,
  "first": -1,
  "name": "Warriors"
}

error:

{
  "errors": [
    {
      "message": "Resolve function for \"Coach.id\" returned undefined",
      "locations": [
        {
          "line": 5,
          "column": 7
        }
      ],
      "path": [
        "teamByName",
        "members",
        0,
        "id"
      ],
      "extensions": {
        "code": "INTERNAL_SERVER_ERROR",
        "exception": {
          "stacktrace": [
            "Error: Resolve function for \"Coach.id\" returned undefined",
            "    at /Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql-tools/dist/makeExecutableSchema.js:66:19",
            "    at field.resolve (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql-extensions/dist/index.js:133:26)",
            "    at resolveFieldValueOrError (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:503:18)",
            "    at resolveField (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:470:16)",
            "    at executeFields (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:311:18)",
            "    at collectAndExecuteSubfields (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:747:10)",
            "    at completeObjectValue (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:737:10)",
            "    at completeAbstractValue (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:694:10)",
            "    at completeValue (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:621:12)",
            "    at completeValueCatchingError (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:531:19)"
          ]
        }
      }
    },
    {
      "message": "Resolve function for \"Player.id\" returned undefined",
      "locations": [
        {
          "line": 5,
          "column": 7
        }
      ],
      "path": [
        "teamByName",
        "members",
        1,
        "id"
      ],
      "extensions": {
        "code": "INTERNAL_SERVER_ERROR",
        "exception": {
          "stacktrace": [
            "Error: Resolve function for \"Player.id\" returned undefined",
            "    at /Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql-tools/dist/makeExecutableSchema.js:66:19",
            "    at field.resolve (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql-extensions/dist/index.js:133:26)",
            "    at resolveFieldValueOrError (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:503:18)",
            "    at resolveField (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:470:16)",
            "    at executeFields (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:311:18)",
            "    at collectAndExecuteSubfields (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:747:10)",
            "    at completeObjectValue (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:737:10)",
            "    at completeAbstractValue (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:694:10)",
            "    at completeValue (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:621:12)",
            "    at completeValueCatchingError (/Users/niravrahamov/Desktop/grand-stack-starter/api/node_modules/graphql/execution/execute.js:531:19)"
          ]
        }
      }
    }
  ],
  "data": {
    "teamByName": {
      "name": "Warriors",
      "members": [
        null,
        null
      ]
    }
  }
}

Most helpful comment

This is now fixed in the latest release v2.13.0

>All comments

This is now fixed in the latest release v2.13.0

Was this page helpful?
0 / 5 - 0 ratings

Related issues

robmurtagh picture robmurtagh  路  3Comments

AdrienLemaire picture AdrienLemaire  路  4Comments

michaeldgraham picture michaeldgraham  路  3Comments

bebbi picture bebbi  路  3Comments

emregency picture emregency  路  5Comments