NestJS 后端是否需要实体?

Are entities required for a NestJS backend?

NestJS 鼓励使用 TypeORM 和实体与数据库交互。我有使用 Express 的经验,但是 NestJS、TypeORM 和它们的实体概念对我来说是新的。

以前,当我使用 Express 后端时,我一直在使用原始 SQL 语句(在某些情况下使用命令行)与数据库交互(从 CRUD 到数据库部署)。 NestJS 还可以在不使用实体的情况下连接到现有数据库(在本例中为 PostgreSQL)(完全删除实体目录)。

话虽如此,我们为什么需要实体?当我熟悉原始 SQL 时,是否需要 NestJS 后端?在 NestJS 中使用数据库的最佳实践是什么?

Do we need entities?

没有。一点也不。您可以使用 pg 或任何您想要的任何其他包编写原始 SQL。这实际上是我所做的 here

Why do we need entities?

在我看来,这实际上取决于您管理数据库架构的方式。如果您让 TypeO/Mikro/prisma 为您管理模式,那么实体就很有用。如果您使用的是像 Hasura 这样的东西,那么迁移是用 SQL 编写的,Hasura 会为您生成类型(我认为 prisma 实际上可能与这里类似)。

就个人而言,我更喜欢做的是制作我自己的迷你 orm,在将数据传回客户端之前反序列化和验证来自数据库的数据。我可以用这种方式编写原始 SQL,并将其映射到我定义的类型,而不是依赖于完整的 ORM。