design-patterns - Prisma 生成的类型会阻碍以后更改数据库层吗?
问题描述
我最近听说prisma
并想尝试一下。我真的很喜欢它提供的简单界面和安全级别。但是,我有一个问题。当我们prisma
用来查询实体时,我们得到的响应具有来自@prisma/client
(prisma generated)的类型。虽然它有一些优点,但我认为这是违反开放封闭原则的地方。将来,如果我想将数据库层或 orm 更改为,typeorm
则必须更改我的服务方法的所有返回类型以反映我的实体(而不是以前的 prisma 生成的类型)。在nestjs 的上下文中考虑它,其中我们有作为我们常见返回类型的实体。有没有办法用棱镜解决这个问题?或者这根本不是问题?
解决方案
在这种情况下,我看到的唯一方法是创建您自己的自定义类型,将 Prisma 的类型作为一个层包含在内。例如
type UserWithPosts = Prisma.UserGetPayload<{
include: { posts: true }
}>
Prisma 的类型系统比 TypeORM 之类的系统更先进,您可以很容易地输入这样的输出。因此,如果您以后甚至想更改 ORM,只需将这些类型更改为 ORM 支持的类型。
推荐阅读
- python - 如何在渴望模式下获得设备放置?
- networking - 使用 IO::Socket::Async 设置 TCP 标志
- winapi - 我想在消息框中使用 YES 和 NO 两个按钮更改输出
- javascript - 单击复选框后如何在文本中添加一条线?
- bioinformatics - 使用 MaSuRCA 3.2.6 汇编程序的问题
- mysql - 计算跨列的不同值
- python - Python 请求 GET 与列表中的字符串
- spring-boot - 在 Spring Boot 之外关闭服务
- python - 在循环中连接数据帧
- c++ - 如果我在每个平台上使用相同的种子,随机结果会相同吗?