😂😂浪费了 3 天时间尝试在新项目中使用 prisma,最后还是决定回到 typeorm

23 小时 52 分钟前
 flyingcrp

兄弟们,prisma 有坑,快跑🏃‍♀️💨💨💨💨💨💨💨💨

https://github.com/prisma/prisma/issues/101421

https://github.com/prisma/prisma/issues/10142#issuecomment-1835279273

https://github.com/prisma/prisma/issues/20128

在遇到上面 1,2 的时候硬着头皮继续,但是遇到 3 的时候彻底让我放弃了它。

提桶跑路了 🏃‍♀️💨💨💨💨💨💨💨

兄弟们,节约时间,原理 prisma

1887 次点击
所在节点    Node.js
42 条回复
subframe75361
23 小时 42 分钟前
试试 kysely ,sql 的写法。或者用更火但 dx 差一些的 drizzle orm
yaodong0126
23 小时 39 分钟前
😂你还真别说,迷信 prisma 的人多的一腿
ultimate42
23 小时 36 分钟前
我是从 typeorm 转到 prisma 的,prisma 确实有不少痛点,时区,联表查嵌套层级深什么的,但感觉开发体验上,prisma 还是要好一点
857681664
23 小时 22 分钟前
同样 delete 一个不存在的数据也会报错,官方解决方案说是用 executeRaw..
qiubaowei
23 小时 22 分钟前
还好我是守旧派 一直用 sequelize
flyingcrp
23 小时 2 分钟前
@ultimate42 我试了,确实不行。model 中注释都不支持。感觉还是差点意思
flmn
22 小时 39 分钟前
drizzle 比较好
BeautifulSoap
22 小时 37 分钟前
也借地方顺便也让大家避坑一个 ORM:千万不要用 drizzle ,千万不要用 drizzle ,千万不要用 drizzle
Hbisedm
22 小时 13 分钟前
drizzle
asen001
21 小时 59 分钟前
@BeautifulSoap drizzle 有什么坑,有个私活项目用 drizzle 开发到一半了,别吓我
SolidZORO
21 小时 55 分钟前
说一个小众 ORM https://sutando.org/ ,底层是 knex ,进可 ORM ,退可 knex RAW 。

之所以是说而不是推荐,因为实在太小众,推荐的话实在担不起这个责任,只想让更多人知道它。sutando 作者维护不算积极,total 就两人维护,start 几十,但是手感是我用过所有 ORM 里面最好的,基本上做到了 1:1 对标 Laravel 的 Eloquent ,用起来及其优雅。比堪称是 nodejs 届 Laravel 的 adonisjs 自带强耦合的 lucid 还要想像 Eloquent 。

y1s1 Node 这边的 ORM 真是烂得可以。drizzle 烂。Prisma 烂,typeORM 烂中烂。

唯一能打一下的是 sequelize ,的确是可靠了,但是及其啰嗦,TS 支持太差(我是说第三方,第一份约等于没有),以及无止境的 beta 让人又爱又恨。
yandif
21 小时 48 分钟前
@BeautifulSoap 同问有啥坑?
BeautifulSoap
21 小时 38 分钟前
@asen001 真用了那就用嘛,也不是不能用,反正之前写 drizzle 我是真的火大
官方文档写得一塌糊涂,看起来很正规但有用的信息基本没多少
schema 一堆特性不支持,连最基本的 index desc asc, union index 都不支。到最后不光要写 schema 还要自己去写额外的 migration sql
类型检查基于 schema 定义,如果我 select 的字段里掺杂了动态生成自动的内容(比如 COUNT(*)之类)的话,过类型检查能折腾死人
执行 raw sql 并且获取到返回值而且要过类型检查比登天都难
等等等等,反正下次项目里谁跟我说用 drizzle 我跟谁急
12tall
21 小时 36 分钟前
knex 应该是用的最舒服的了,虽然只是一个 builder
wunonglin
21 小时 35 分钟前
drizzle +1
flyingcrp
21 小时 27 分钟前
目前应该是在 typeorm 中暂时不打算出去了。
prisma 在构建和打包时也会有很多问题。不设置 binary 的话会直接多 30M+的大小。很离谱。
然后里面还有一个奇怪的地方,当前 prisma 已经让用自定义 output 路径去做 client 的引入。
但是底层似乎有依赖了 prisma ,这个里面有个 public 文件夹,里面全是一些文档还是啥的。也是三十多 M.
justdoit123
21 小时 18 分钟前
也尝试使用 prisma ,说说我觉得的痛点与疑惑,希望有经验的解答下:

1. prisma 不生成 class ,如何进一步跟 class-validator 以及 swagger 结合?
2. 不生成 class ,如果我有很简单的 computed field ,就不知道怎么实现。虽然官方有 [Client extension]( https://www.prisma.io/docs/orm/prisma-client/queries/computed-fields#using-a-prisma-client-extension) 方案,但是 extend 后的 model 类型获取不直接。虽然可以通过类型体操获取。
3. 个人对滥用 DSL 很反感。DB 的 schema 真的到了需要叠一层 DSL 的程度了吗? 我个人认为还没必要,这样做的收益不高。为了“无缝”切换 DB 类型吗?正常项目开发不会频繁切换 DB 类型,况且也无法做到无缝。 想要降低使用 DB 的门槛吗?熟悉一个 DB 真的是后端的基础门槛,你虽然可以暂时欠着,但是终究要还上,借助 DSL 会很被动,学的都是人家嚼碎了喂你的东西。prisma 用 DSL 描述 schema 的理由,我能想到的唯一理由应该就是他们的野心是实现一个跨语言的 ORM 。
ByteCat
21 小时 11 分钟前
在用 drizzle ,感觉很爽,可以写类似 sql 的语法,复杂查询很方便
Hanggi
19 小时 42 分钟前
感觉楼主还是对 ts 的编程思想理解和 prisma 的使用方法上...有不一致吧。
技术选型按自身的理解和喜好来就可以了。

看看 prisma 自己对 typeorm 的对比,有没有吸引自己转战的特性,
https://www.prisma.io/docs/orm/more/comparisons/prisma-and-typeorm

至少目前看来 prisma 是趋势,能早点上手就早收益,用不来也没必要强求,毕竟有那么多人还在宣扬不用 orm ,sql 就应该手写,hhh 。
https://npmtrends.com/prisma-vs-sequelize-vs-typeorm
Belmode
19 小时 40 分钟前
我就觉得用 Prisma 能省点事,不用写一堆像 TypeOrm 中那样的实体对象,写很多注解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1131986

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX