所以我正在做我的一个项目,我的能力似乎死胡同了。
我正在研究一个GraphQL后端,该后端应该从MySQL数据库中获取一些数据。我已经可以使用解析器,因此我可以提取所有用户等,但是我无法提取嵌套类型。例如:
query {
ways {
id
distance
duration
purpose
User {
id
dob
}
}
}
这仅从我的数据库返回所有方式,但用户返回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)
}
使用上述查询,我希望结果也包括用户及其数据。
任何建议都值得赞赏。
答案 0 :(得分:0)
只有字段(而非类型)可以具有解析器。 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)
}