GraphQL 解析器只解析第一种类型
GraphQL resolvers only resolving the first type
所以我正在做我的一个项目,但我的能力似乎走到了死胡同。
我正在开发一个 GraphQL 后端,它应该从 MySQL 数据库中获取一些数据。我已经让解析器工作,所以我可以获取所有用户等,但我无法获取嵌套类型。例如:
query {
ways {
id
distance
duration
purpose
User {
id
dob
}
}
}
这只是 returns 来自我的数据库的所有方式,但用户 returns null
schema.ts
export const typeDefs= gql`
schema {
query: Query
}
type Query {
ways: [Way]
users: [User]
getUser(id: String!): User
getWay(id: String!):Way
}
type Way{
id:String
distance:Float
duration:Float
stages:[Stage]
purpose:String
User:User
}
type User{
id:String
firstname:String
lastname:String
sex:String
dob:String
annualTicket:Boolean
Ways:[Way]
}
resolver.ts
export const resolvers = {
Query: {
ways: async(parent, args, context, info) => {
console.log("ways")
const answer=await getAllWays();
return answer;
},
users: async(parent, args, context, info) => {
console.log("users")
const answer=await getAllUser();
return answer;
},
getUser: async(parent, args, context, info) =>{
console.log("getUser")
const answer=await getUserPerID(args.id);
return answer;
},
getWay:async(parent, args, context, info) =>{
console.log("getWay")
const answer=await getWayPerID(args.id);
return answer;
}
},
User:async(parent, args, context, info) =>{
console.log("User: id="+args.id)
ways: User => getWaysPerUserID(args.id)
},
Way:async(parent, args, context, info) => {
console.log("Way: id="+parent.userID)
user: Ways => getUserPerID(parent.userID)
}
我希望结果也包括用户及其数据,使用上述查询。
非常感谢任何建议。
只有字段而不是类型可以有解析器。 resolvers
对象中的每个键都应映射到另一个对象,而不是函数。所以而不是
Way:async(parent, args, context, info) => {
console.log("Way: id="+parent.userID)
user: Ways => getUserPerID(parent.userID)
}
你需要写:
Way: {
// We capitalize the field name User because that's what it is in your schema
User: (parent) => getUserPerID(parent.userID)
}
所以我正在做我的一个项目,但我的能力似乎走到了死胡同。
我正在开发一个 GraphQL 后端,它应该从 MySQL 数据库中获取一些数据。我已经让解析器工作,所以我可以获取所有用户等,但我无法获取嵌套类型。例如:
query {
ways {
id
distance
duration
purpose
User {
id
dob
}
}
}
这只是 returns 来自我的数据库的所有方式,但用户 returns null
schema.ts
export const typeDefs= gql`
schema {
query: Query
}
type Query {
ways: [Way]
users: [User]
getUser(id: String!): User
getWay(id: String!):Way
}
type Way{
id:String
distance:Float
duration:Float
stages:[Stage]
purpose:String
User:User
}
type User{
id:String
firstname:String
lastname:String
sex:String
dob:String
annualTicket:Boolean
Ways:[Way]
}
resolver.ts
export const resolvers = {
Query: {
ways: async(parent, args, context, info) => {
console.log("ways")
const answer=await getAllWays();
return answer;
},
users: async(parent, args, context, info) => {
console.log("users")
const answer=await getAllUser();
return answer;
},
getUser: async(parent, args, context, info) =>{
console.log("getUser")
const answer=await getUserPerID(args.id);
return answer;
},
getWay:async(parent, args, context, info) =>{
console.log("getWay")
const answer=await getWayPerID(args.id);
return answer;
}
},
User:async(parent, args, context, info) =>{
console.log("User: id="+args.id)
ways: User => getWaysPerUserID(args.id)
},
Way:async(parent, args, context, info) => {
console.log("Way: id="+parent.userID)
user: Ways => getUserPerID(parent.userID)
}
我希望结果也包括用户及其数据,使用上述查询。
非常感谢任何建议。
只有字段而不是类型可以有解析器。 resolvers
对象中的每个键都应映射到另一个对象,而不是函数。所以而不是
Way:async(parent, args, context, info) => {
console.log("Way: id="+parent.userID)
user: Ways => getUserPerID(parent.userID)
}
你需要写:
Way: {
// We capitalize the field name User because that's what it is in your schema
User: (parent) => getUserPerID(parent.userID)
}