如何解决将请求传递到函数中生成的 Apollo Server 上下文中
学习 GraphQL 并且有点坚持将 req 传递到我为保持整洁而制作的生成上下文函数中。
我想我对 createContext((req) => req)
行做了一些愚蠢的事情,好像我在路由处理程序中 console.log( ctx.request )
我得到 [Function (anonymous)]
从 server.ts 范围捕获 this.req 并将其传递给 createContext 的替代方法是什么?
server.ts
import { ApolloServer } from 'apollo-server'
import { schema } from './nexusSchema'
import { createContext } from './context'
const server = new ApolloServer({
schema,context: createContext((req) => req),})
server.listen().then(({ url }) => {
console.log(`? Server ready at ${url}`)
})
context.ts
import { prismaClient,prisma as prismaTypes } from '@prisma/client'
import { prismaDelete,onDeleteArgs } from '@paljs/plugins'
import { PubSub } from 'apollo-server'
class prisma extends prismaClient {
constructor(options?: prismaTypes.prismaClientOptions) {
super(options)
}
async onDelete(args: onDeleteArgs) {
const prismaDelete = new prismaDelete(this)
await prismaDelete.onDelete(args)
}
}
const prisma = new prisma()
const pubsub = new PubSub()
export interface Context {
prisma: prisma
select: any
pubsub: PubSub
request: {
request: {
headers: {
authorization: string
}
}
connection: {
context: {
Authorization: string
}
}
}
}
export function createContext(req): Context {
return {
prisma,select: {},pubsub,request: req,}
}
解决方法
毕竟我是个笨蛋。
注意,我还必须调整请求对象的接口以适应 Apollo Server 2!
server.ts
const server = new ApolloServer({
schema,context: createContext,})
context.ts
export interface Context {
prisma: Prisma
select: any
pubsub: PubSub
request: {
req: {
headers: {
authorization: string
}
}
connection: {
context: {
Authorization: string
}
}
}
}
export const createContext = (req): Context => {
return {
prisma,select: {},pubsub,request: req,}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。