用于解析器 GraphQL 瑜伽的 TypeScript 类型(在上下文中使用 prisma2)

Posted

技术标签:

【中文标题】用于解析器 GraphQL 瑜伽的 TypeScript 类型(在上下文中使用 prisma2)【英文标题】:TypeScript Types for Resolvers GraphQL yoga (use prisma2 on context) 【发布时间】:2020-10-25 02:51:58 【问题描述】:

对不起我的英语

所以,我需要在 GraphQL 瑜伽上为解析器创建类型。我用 graphql-codegen 创建了它,但它的工作原理很奇怪。而且他目前没有为 Prisma2 创建类型上下文。

codegen.yml

schema: ./src/schema.graphql
generates:
  ./src/resolvers/resolvers-types.ts:
    plugins:
      - typescript
      - typescript-resolvers
config:
  contextType: './context#Context'

context.ts

import PrismaClient from '@prisma/client'

export type Context =  prisma:PrismaClient 

解析器.ts

import IResolvers, Mutation from './resolvers-types'

interface StringIndexSignatureInterface 
    [index: string]: any


type StringIndexed<T> = T & StringIndexSignatureInterface

const resolvers: StringIndexed<IResolvers> = 
Query: 
        users: (parent, args, ctx, info) => 
            return ctx.prisma.user.findMany
        
    
;

他抛出关于类型不兼容的错误

没有 StringIndexed 他不工作

请告诉我如何做到这一点

【问题讨论】:

【参考方案1】:

我找到解决方案 我添加到 codegen.yml contextType

codegen.yml

generates:
  ./src/resolvers/resolvers-types/resolvers-types.ts:
    plugins:
      - typescript
      - typescript-resolvers
      
config:
  contextType: './context#Context'
  enumsAsTypes: true

context.ts

import PrismaClient from '@prisma/client'

export type Context =  prisma:PrismaClient

【讨论】:

以上是关于用于解析器 GraphQL 瑜伽的 TypeScript 类型(在上下文中使用 prisma2)的主要内容,如果未能解决你的问题,请参考以下文章

用于可迭代对象的 Java GraphQL 解析器:休眠异常

GraphQL 解析器,用于按名称而不是 ID 获取项目

用于同一 Mongoose 集合上的接口的 GraphQL 解析器

如何在 GraphQL 解析器中添加用于缓存的 redis 客户端

错误:使用约束时 Graphql 瑜伽中的指令约束

javascript graphql瑜伽,简单的待办事项