当前位置: 首页 > 知识库问答 >
问题:

TypeGraphql和Prisma 2类型冲突

微生高谊
2023-03-14

我在Apollo Express服务器上使用TypeGraphql和Prisma 2,带有PostgreSQL db。

我使用Prisma来内省我的DB,然后从模式生成TypeScript类型。prisma

我还使用TypeGraphQL创建了@ObjectType模型类。

我的问题是,我似乎遇到了我的TypeGraphQL类和从Prisma生成的类型之间的类型冲突。例如,我有一个TypeGraphQL课程类,看起来像这样

@ObjectType()
export class Course {
  @Field(() => Int)
  id: number;

  @Field()
  title: string;
  .......

  @Field(() => User)
  creator: User;
}

Prisma生成一个课程类型,如下所示:

/**
 * Model Course
 */

export type Course = {
  id: number
  title: string
  .......
  creator_id: number
}

因此,在我的自定义解析器中,当我尝试创建课程时,我说变异返回一种类型的课程。(我有一个控制器使用此服务,但该服务就是问题所在)

export const createCourseService = async (
  prisma: PrismaClient,
  createCourseInput: CreateCourseInput,
  userId: number
): Promise<Course> => {
  let err, newCourse, foundUser;
  const { course, user } = prisma;

  .....

  [err, newCourse] = await to(
    course.create({
      data: {
        ...createCourseInput,
        creator: {
          connect: { id: userId },
        },
      },
    })
  );
  return newCourse;
};

但是来自我的TypeGraphQL类的课程类型不同于Prisma生成的课程类型,但是它们被命名为相同的,所以TypeScript认为它们是相同的,但是给出了错误的消息,说创建者在类型中丢失了#####################################################################################################################################################不确定解决这个问题的最好方法是什么。

有没有办法把TypeGraphQL类和Prisma类型缝合在一起,或者用其他方法?

共有1个答案

翟嘉年
2023-03-14

导入类型时,可以使用作为关键字(执行类型断言)并重命名其中一个类型。例如,您可以将Prisma中的课程重命名为Prisma课程DB课程CourseModel或任何您喜欢的内容。下面是要使用的语法:

import { Course as DBCourse } from '@prisma/client'

然后,在解析器中,您可以拥有以下代码:

export const createCourseService = async (
  prisma: PrismaClient,
  createCourseInput: CreateCourseInput,
  userId: number
): Promise<DBCourse> => {
  let err, newCourse, foundUser;
  const { course, user } = prisma;

  .....

  [err, newCourse] = await to(
    course.create({
      data: {
        ...createCourseInput,
        creator: {
          connect: { id: userId },
        },
      },
    })
  );
  return newCourse;
};
 类似资料:
  • mimeType String - 要发送的缓冲区的mimeType data Buffer - 实际的Buffer内容

  • 问题内容: 我们有一个以异常结尾的包,例如 直到eclipse 3.3为止,我们的代码库都没有问题,但是当我们转到eclipse 3.4时,它开始给出与此软件包相关的错误: 当我将包名称重构为abcexceptions时,没有任何问题。这是由于eclipse 3.4中的错误还是有一些设置可以纠正此行为? 问题答案: 我在eclipse中更改了编译选项之一,问题消失了。在工作空间属性下:Java编译

  • 问题内容: 我在两个不同的数据库模式中定义了相同的表类型。当我尝试将一个类型的SP作为参数从一个模式调用到另一个模式时,出现以下错误: “操作符类型冲突myCustomType与myCustomType不兼容” 我有以下代码: 类型定义 存储过程定义 执行 我该如何解决这个问题? 问题答案: 您遇到了用户定义表类型的局限性之一。 请参阅此Microsoft Connect项目 ,以“按设计”关闭。

  • 问题内容: python中有一个类型,但是我不知道该如何使用它。 在Python文档中,描述为: object参数必须是支持缓冲区调用接口的对象(例如字符串,数组和缓冲区)。将创建一个引用该对象参数的新缓冲区对象。缓冲区对象将从对象的开头(或指定的偏移量)开始是一个切片。切片将延伸到对象的末尾(或具有由size参数指定的长度)。 问题答案: 用法示例: 在这种情况下,缓冲区是一个子字符串,从位置6

  • 我试图在中使用来创建一个新变量,在这个变量中,我将一些值设置为missing并同时重新编码其他值。 但是,如果尝试将值设置为,则会出现一个错误,说明我们无法创建变量,因为是逻辑的: mutate_impl(.data,dots)中出错: 计算错误:类型必须是double,不是逻辑。 在数据帧的非逻辑向量中,是否有方法使用此设置值?

  • 我现在正在尝试泽西,按照这个链接在netbean中设置了一个网络服务。我有我的实体类和REST类。它可以从javafx2客户端添加、编辑、删除、请求对象(在本例中是用户对象)。 然而,现在我尝试向我的网络服务添加一个新方法来进行一些简单的身份验证。首先,我在Users.java文件中添加了一个新的命名查询(Users.login): 之后,我将以下代码添加到我的UsersFacadeREST.ja

  • 类型和泛型 类型系统的首要目的是检测程序错误。类型系统有效的提供了一个静态检测的有限形式,允许我们代码中明确某种类型的变量并且编译器可以验证。类型系统当然也提供了其他好处,但错误检测是他存在的理由(Raison d’Être) 我们使用类型系统应当反映这一目标,但我们必须考虑到读者(译注:读你代码的人):明智地使用类型可以增加清晰度,而过份聪明只会迷乱。 Scala的强大类型系统是学术探索和实践共

  • fw1在这里使用jar中的logger.java http://anonsvn.jboss.org/repos/common/common-logging-spi/trunk/src/main/java/org/jboss/logging/ fw2在这里使用jar中的logger.java