新项目试了一下 Node 目前被推荐最多的 ORM prisma https://github.com/prisma/prisma。
然后发现这个框架居然没有提供行锁的任何 API,只能写 raw sql 来实现。
但在个人认知里,其实行锁用的还比较频繁,特别是现在互联网公司非常喜欢在 mysql 里面存序列化后的 JSON,很多需要增量更新的情况,比如读取全量的 json 字符串,然后把新的字段更新进去,再保存。没有行锁的话,这个操作很容易就互相覆盖了。(虽然这是一种不太好的实践,但说实话在几家大厂都见过大量这种写法)
Raw SQL 遇到过错误 https://github.com/prisma/prisma/issues/21570
我以为这种 RawSQL 的 API 是软件的底层,应该先设计。结果一年多都没解决。
吹自己是次世代,我现在对 JavaScript 的东西保持怀疑。
次世代框架你也不能说它错,反正不是“现代”能用的框架。
还是老一点的东西好用,这个 prisma 一堆人推荐,结果 issue 长期两三千个,碰到问题就 gg。node 这边老牌的 sequelize 和 TypeORM 都挺好的
是的。时髦有风险。
Node 能做的,Sinatra + Sequel(ORM)其实都行。我经常用这个渲染页面。
Ruby 下的 Sequel(ORM)0 BUG,实在是强。
JS 圈子营销严重,新出来的工具全都号称次世代产品、颠覆性设计之类的,然后网站都做的非常 fancy。擅长文档营销,写一些看起来很厉害实则全是水文的「Ultimate Guide」和「Comprehensive Guide」。
js 这边其实很多东西很早很早就有了,而且也经过了超大型项目的验证,比如什么 express,koa,eggjs 之类的。
但一堆人总觉得这些老东西有问题,我们要重新设计“现代化”的 XXXX 库,三年两载就出来一堆新库,与之相伴的还有造一堆新概念。最后大家兴冲冲地跑去用,结果发现一堆问题 还真不如用以前的东西,至少真的能完成任务。
node 这边 typeorm 也是 dead, 不要用它 https://github.com/typeorm/typeorm/issues/4686 https://github.com/Kononnable/typeorm-model-generator/issues/329
https://github.com/typeorm/typeorm/issues/4686#issuecomment-528332702
这个回答提醒了我们,还是要使用有固定团队维护的技术产品。比如 Rails。