graphql - GraphQL 解析器仅解析第一种类型
问题描述
所以我在做我的一个项目,我的能力似乎走到了尽头。
我正在开发一个应该从 MySQL 数据库中获取一些数据的 GraphQL 后端。我已经让解析器工作了,所以我可以获取所有用户等,但我无法获取嵌套类型。例如:
query {
ways {
id
distance
duration
purpose
User {
id
dob
}
}
}
这仅返回我的数据库中的所有方式,但用户返回 null
架构.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]
}
解析器.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)
}
推荐阅读
- node.js - 如何解决异步回调的笑话测试用例中的异步超时?
- python - 我找不到如何在 sqlalchemy 中设置关系
- reactjs - React JS:我的 package.json 文件中有一个看起来很奇怪的依赖项
- ios - iOS UITableView - 排序后,一个单元格在标题顶部滚动
- ios - 不支持更改 UITableViewHeaderFooterView 的背景颜色。改用背景视图配置
- json - React Font Awsome 从 JSON 导入字体变量名称
- windows - 将其用作 git 编辑器时,Windows 上的 Vim 工作异常
- sass - Ng serve 因 scss 错误而失败,修复它后,它不会重新编译应用程序
- request - 关于Tomcat7,如何设置超时的最大响应时间?
- python - 熊猫:如何在月数上绘制条形图