Vona ORM 是船新的 Node.js ORM 库。提供的多租户能力可以同时支持共享模式
和独立模式
。首创 DTO 动态推断与生成能力,解放我们的双手,显著提升生产力。为什么敢说是首创,因为 Prisma 和 Drizzle 没有提供此能力,Java 系亦如是。
Vona ORM 不仅提供基于静态关系
的关联查询,还提供动态关系
,从而适应大型业务系统所要求的灵活性和扩展性。
此框架所规划的能力还有很多,就不再赘述,以免占用大家宝贵时间。因为功能多,所以,花了大量时间终于把文档肝出来了。感兴趣的,可以观摩一下,欢迎拍砖。👏
文档地址: https://vona.js.org/zh/guide/techniques/orm/introduction.html
![]() |
1
Ketteiron 17 小时 55 分钟前 ![]() 我来拍砖了。
> Prisma 和 Drizzle 没有提供此能力 因为这是伪需求,java 写傻掉的 leader 才需要这种能力 而且你这 ORM 与 Prisma/Drizzle 等 ORM 完全不是一条路,连比较的意义都没有。 你的 ORM 依托于 Vona 框架本体,是一系列独家 API 和抽象的封装,并不是纯粹的框架无关 ORM 。 zod 的 schema 原本是一等公民,你在自己框架里是将其作为二等公民 findOne(@Arg.query('id') id: number) -> z.nmber() findOne(@Arg.query() query: DtoStudentInfo) -> z.object() 多了一层被框架拘束的抽象与封装 这个所谓的动态推断与生成 DTO ,为什么要手动重复指定返回值类型。 ``` @Api.body(v.array($Dto.get(() => ModelOrder, { include: { products: true } }))) async findAll() { return this.scope.model.order.select({ include: { products: true, }, }); } } ``` DRY (Don't Repeat Yourself),你写的不是 TypeScript ,而是 Java ,或者说 SpringBoot 。 想做新的 web 框架,还是多看看 hono 和 elysia 吧,面向类型才是正确方向,面向对象已经是旧时代的残党了,nestjs 这条路已经走到头了,像 adonisjs 之类的也只能走全栈这条路另辟蹊径。 |
2
linecode 17 小时 38 分钟前 ![]() DTO 感觉没啥用,还不如直接写一份 request 、response 的 schema ,还灵活,相当于直接把 openapi 文档也给写了
|
![]() |
3
Ketteiron 17 小时 19 分钟前
@linecode #2 fastify/tRPC 以及继承他们思想的 elysia/hono 就是这样做的,schema=校验方式=类型=接口文档,typescript 世界不需要 DTO/VO/POJO/XXXO 。
|
![]() |
4
zhennann OP 在开发后端 API 服务时,DTO 是进行参数验证、生成 Swagger 元数据的关键节点。如果不能像推断类型一样动态推断出 DTO ,那么,我们就仍然需要手工创建 DTO 。随着业务的增长,复杂的表间关系会让手工补充 DTO 的工作日益繁重。
而 Vona ORM 首创 DTO 动态推断与生成能力,解放我们的双手,显著提升生产力。甚至可以说,对于构建更加优雅的 Node.js 后端框架而言,能够动态推断与生成 DTO ,是非常重要的里程碑。 |
5
FlashEcho 8 小时 56 分钟前
|