前几天重构了一个开源的项目,还是 golang 好,orm 部分可供我选择得有限.
今天又想重构多年前读大学时写的一个小项目(当时还是 Vue+Laravel5 写的)
想试试 next.js+react 来写,用 docker 部署,可以实现一下服务端渲染,但是需要一个后端的 orm.
但是这 orm 轮子太多了,着实给我看花眼了.
一定要支持 Typescript 的类型提示的,如果轮子是纯 Typescript 写的就更好了.
1
wszgrcy 2021-08-10 21:13:33 +08:00 1
typeorm
|
3
des 2021-08-10 21:25:38 +08:00 via iPhone 1
prisma
|
4
randomboi 2021-08-10 21:39:57 +08:00 1
prisma yyds
|
5
Cbdy 2021-08-10 21:48:53 +08:00 via Android 1
Sequlize
|
6
SolidZORO 2021-08-10 22:01:26 +08:00 via iPhone 5
推荐 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 1
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
xujiahui 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 的事务贼难用
|