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
]
}
}
}
This is now fixed in the latest release v2.13.0
Most helpful comment
This is now fixed in the latest release v2.13.0