微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Prisma 生成的类型会阻碍以后更改数据库层吗?

如何解决Prisma 生成的类型会阻碍以后更改数据库层吗?

我最近听说了 prisma 并想尝试一下。我真的很喜欢它提供的简单界面和类型安全级别。但是,我有一个问题。当我们使用 prisma 查询实体时,我们得到的响应的类型来自 @prisma/client (棱镜生成)。虽然它有一些优点,但我认为这是违反开放封闭原则的地方。将来,如果我想将数据库层或 orm 更改为 typeorm,那么我的服务方法的所有返回类型都必须更改以反映我的实体(而不是之前的 prisma 生成的类型)。在 nestjs 的上下文中考虑它,我们有实体是我们常见的返回类型。有没有办法用prisma解决这个问题?或者根本就不是问题?

解决方法

在这种情况下,我看到的唯一方法是创建您自己的自定义类型,将 Prisma 的类型作为图层包含在内。例如

type UserWithPosts = Prisma.UserGetPayload<{
  include: { posts: true }
}>

Prisma 的类型系统比 TypeORM 之类的系统更先进,您可以很容易地输入这样的输出。因此,如果您以后甚至想更改 ORM,只需将这些类型更改为 ORM 支持的类型即可。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。