前几天重构了一个开源的项目,还是 golang 好,orm 部分可供我选择得有限.
今天又想重构多年前读大学时写的一个小项目(当时还是 Vue+Laravel5 写的)
想试试 next.js+react 来写,用 docker 部署,可以实现一下服务端渲染,但是需要一个后端的 orm.
但是这 orm 轮子太多了,着实给我看花眼了.
一定要支持 Typescript 的类型提示的,如果轮子是纯 Typescript 写的就更好了.
1 wszgrcy 2021-08-10 21:13:33 +08:00 ![]() typeorm |
![]() | 3 des 2021-08-10 21:25:38 +08:00 via iPhone ![]() prisma |
![]() | 4 randomboi 2021-08-10 21:39:57 +08:00 ![]() prisma yyds |
5 Cbdy 2021-08-10 21:48:53 +08:00 via Android ![]() Sequlize |
![]() | 6 SolidZORO 2021-08-10 22:01:26 +08:00 via iPhone ![]() 推荐 Sequelize,TS 也有对应版本,nest 也有官方的 plugin 。 TypeORM 深度用过,坑十分多,而且新版本难产,repo 不活跃,文档几乎等于没有,差不多有问题都要翻源码解决。 另外就是 prisma 刚用起来会比较兴奋,但…… 该有的问题还是有,而且还多了一层。 看楼主之前用 Laravel,可以很负责的和你说,node 没有一个 ORM 可以和 Eloquent 抗衡,是的哪怕是 Sequelize 也不行,S 的代码量基本是是 E 的两倍以上,如果涉及到 MM 表那就更长了。 个人很喜欢 Laravel,主要是喜欢他的 ORM Eloquent,只可惜 PHP 强类型还不堪用,并且一些业务要使用 Eletron,才勉为其难的使用上了 nest + Sequelize 。 |
![]() | 7 DaTuDou 2021-08-10 22:22:40 +08:00 ![]() Prisma + 1 |
![]() | 9 joyqi 2021-08-10 22:40:27 +08:00 一直用 Sequlize |
![]() | 10 mscststs 2021-08-10 23:54:41 +08:00 ORM 简直深坑,现在顶多用 Knex 做一下语法辅助。 |
![]() | 12 SolidZORO 2021-08-11 00:48:04 +08:00 via iPhone @kiddyu 不大行。和 Laravel 差距太大,虽然一整套范式给你约定好了,可惜 node 这边没有能打的 ORM 。他那边封装 knex 的 lucas (应该是叫这个吧?)比较拉垮。 其实这些单一好与坏都可以弥补,比如 ORM,没有?那花时间肯定可以写个巨牛逼的出来,但自己一个人造轮子不行啊,还得搞生态。生态太重要了。 PHP 那海量且久经考验的 composer 库是非常厉害的,这个 node 实在比不了,不是质量不质量的问题就是整个社区风气的问题。node 这边的人倾向造轮子,什么不好就造,造完版本号 0.0.x 还没用完就弃了。 如果没弃,就搞断崖式 BC,本来有点生态的,这一弃全没了。经常可以看到有些 lib 的 plugin 对标的不是 2.x.x 这种大版本而是 2.2.x 这个级别的版本。 感觉扯远了,回到正题。现在是 2021 年,node 这边基本可以确定只剩 nestjs 和 express 两个选择了,实在想要性能还多个 fastify 可以选。别的就算了。 |
![]() | 13 mufeng 2021-08-11 08:50:47 +08:00 via iPhone Sequlize +1 |
![]() | 14 jawilx 2021-08-11 09:05:05 +08:00 Sequlize |
![]() | 15 mywaiting 2021-08-11 09:14:06 +08:00 感觉简单写个自己的 SQL CURD 的操作封装就好了,没有必要上 ORM 这一套吧 感觉还是自己手撸原生 SQL 语句最舒服,用了 ORM 的话,它自己定义的语法我还得学一遍 |
16 hafung 2021-08-11 09:31:12 +08:00 eloquent 真的太强了! 有人说不用 ORM 写原生 sql 的,是没写过大项目或者没有重构过吗? sql 到后期根本无法维护 |
![]() | 17 code4you 2021-08-11 09:32:38 +08:00 Prisma + 1 主要是网站和 studio UI 好看 虽然 issue 1k+ |
![]() | 18 hawei 2021-08-11 09:47:45 +08:00 应该用 graphQL 的那套,很快很强大 |
![]() | 19 keepeye 2021-08-11 09:48:40 +08:00 在 eloquent 面前,go 的几个 orm 也不能打 |
![]() | 20 xd547 2021-08-11 10:29:57 +08:00 Prisma |
![]() | 22 EPr2hh6LADQWqRVH 2021-08-11 10:45:38 +08:00 小项目根本别用 SQL 数据库,mongodb 不香吗,为什么虐自己 大项目的那个投入和工程师能力,自己写个适合的数据层,靠谱可控 |
![]() | 23 lbunderway 2021-08-11 10:51:51 +08:00 sequelize 应付 crud 完全没问题,复杂的数据统计还是要原生 sql |
![]() | 24 L1shen 2021-08-11 11:45:54 +08:00 简单的直接写 knex 也挺好的 |
![]() | 25 xieren58 2021-08-11 12:09:55 +08:00 Prisma + 1 |
![]() | 27 inhal 2021-08-11 13:20:15 +08:00 前两周试了下 Adonis 5,有 Laravel 的感觉,更早版本没用过。 |
29 wowbaby 2021-08-11 14:28:09 +08:00 @SolidZORO 同意,前端更新太快,还要各种兼容,轮子太多五花八门,一句话真 TM 累!每次做项目 70%的时间是在搞前端。 |
![]() | 30 dream4ever 2021-08-11 15:03:11 +08:00 @Smash GitHub 的搜索结果默认是按照“Best match”排序的,你切换成按照“Most stars”排序,typeorm 就排第一了。 |
![]() | 31 dream4ever 2021-08-11 15:10:17 +08:00 |
![]() | 33 for8ever 2021-08-12 09:57:22 +08:00 推荐 prisma,最近正在使用 |
![]() | 34 Smash OP 试用了 Prisma 回来了,给我一种熟悉的体验,这不就根据 schema 文件,生成对应的 orm 代码直接使用吗? 现在很多库都是这种元编程的模式来生成对应的代码,之前写 Android 的时候用过的 Glide,Dagger2 写 Golang 的时候用过的 facebook 的 ent. 缺点就是要多包一层. |
![]() | 35 XCFOX 2021-09-13 00:08:45 +08:00 提名 mikro( https://mikro-orm.io/) 一下,比 TypeOrm 强在隐式事务、自带请求作用域 |
![]() | 36 ed0522 2023-10-07 14:30:16 +08:00 这三个问题都不少,至少 Sequelize 和 typeorm 文档目录清晰一些,sequelize 最老,可能沉淀的好一些。 |
![]() | 38 LEFT 2023-10-08 06:17:42 +08:00 via iPhone sequelize 的事务贼难用 |