【发布时间】:2021-12-07 18:50:06
【问题描述】:
我是 GraphQL 的新手,但我的理解是,如果我有一个 User 类型,例如:
type User {
email: String
userId: String
firstName: String
lastName: String
}
还有这样的查询:
type Query {
currentUser: User
}
像这样实现解析器:
Query: {
currentUser: {
email: async (_: any, __: any, ctx: any, ___: any) => {
const provider = getAuthenticationProvider()
const userId = await provider.getUserId(ctx.req.headers.authorization)
const { email } = await UserService.getUserByFirebaseId(userId)
return email;
},
firstName: async (_: any, __: any, ctx: any, ___: any) => {
const provider = getAuthenticationProvider()
const userId = await provider.getUserId(ctx.req.headers.authorization)
const { firstName } = await UserService.getUserByFirebaseId(userId)
return firstName;
}
}
// same for other fields
},
很明显出了点问题,因为我复制了代码,并且每个请求的字段都查询了一次数据库。有没有办法防止代码重复和/或缓存数据库调用?
我需要填充 MongoDB 字段的情况如何?谢谢!
【问题讨论】:
-
提供有关您拥有的代码的更多信息将帮助人们帮助您。至少提供代码部分,展示如何使用类型、查询和解析器的示例,包括使用过的导入。
标签: node.js mongodb mongoose graphql apollo-server