• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Smash
V2EX  ›  程序员

求推荐个 Node.js 的 orm 轮子,看轮子都看花眼了

  •  1
     
  •   Smash · Aug 10, 2021 · 9631 views
    This topic created in 1913 days ago, the information mentioned may be changed or developed.

    前几天重构了一个开源的项目,还是 golang 好,orm 部分可供我选择得有限.

    今天又想重构多年前读大学时写的一个小项目(当时还是 Vue+Laravel5 写的)

    想试试 next.js+react 来写,用 docker 部署,可以实现一下服务端渲染,但是需要一个后端的 orm.

    但是这 orm 轮子太多了,着实给我看花眼了.

    一定要支持 Typescript 的类型提示的,如果轮子是纯 Typescript 写的就更好了.

    38 replies  •  2023-10-08 06:17:42 +08:00
    wszgrcy
    wszgrcy
    Aug 10, 2021❤️1
    1
    typeorm
    Smash
    Smash
    OP
    Aug 10, 2021
    2
    @wszgrcy #1 为什么我 github 首页搜索 orm,过滤 typescript,居然没在第一页 🐶
    des
    des
    Aug 10, 2021 via iPhone❤️1
    3
    prisma
    randomboi
    randomboi
    Aug 10, 2021❤️1
    4
    prisma yyds
    Cbdy
    Cbdy
    Aug 10, 2021 via Android❤️1
    5
    Sequlize
    SolidZORO
    SolidZORO
    Aug 10, 2021 via iPhone❤️5
    6
    推荐 Sequelize,TS 也有对应版本,nest 也有官方的 plugin 。

    TypeORM 深度用过,坑十分多,而且新版本难产,repo 不活跃,文档几乎等于没有,差不多有问题都要翻源码解决。

    另外就是 prisma 刚用起来会比较兴奋,但…… 该有的问题还是有,而且还多了一层。

    看楼主之前用 Laravel,可以很负责的和你说,node 没有一个 ORM 可以和 Eloquent 抗衡,是的哪怕是 Sequelize 也不行,S 的代码量基本是是 E 的两倍以上,如果涉及到 MM 表那就更长了。

    个人很喜欢 Laravel,主要是喜欢他的 ORM Eloquent,只可惜 PHP 强类型还不堪用,并且一些业务要使用 Eletron,才勉为其难的使用上了 nest + Sequelize 。
    DaTuDou
    DaTuDou
    Aug 10, 2021❤️1
    7
    Prisma + 1
    yoa1q7y
    yoa1q7y
    Aug 10, 2021
    8
    @des #3
    @randomboi #4 看了下 prisma 的 open issues 有 1200+ 😂
    joyqi
    joyqi
    Aug 10, 2021
    9
    一直用 Sequlize
    mscststs
    mscststs
    Aug 10, 2021
    10
    ORM 简直深坑,现在顶多用 Knex 做一下语法辅助。
    kiddyu
    kiddyu
    Aug 11, 2021
    11
    @SolidZORO #6 adonisjs 不知道怎么样
    SolidZORO
    SolidZORO
    Aug 11, 2021 via iPhone
    12
    @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 可以选。别的就算了。
    mufeng
    mufeng
    Aug 11, 2021 via iPhone
    13
    Sequlize +1
    jawilx
    jawilx
    Aug 11, 2021
    14
    Sequlize
    mywaiting
    mywaiting
    Aug 11, 2021
    15
    感觉简单写个自己的 SQL CURD 的操作封装就好了,没有必要上 ORM 这一套吧

    感觉还是自己手撸原生 SQL 语句最舒服,用了 ORM 的话,它自己定义的语法我还得学一遍
    hafung
    hafung
    Aug 11, 2021
    16
    eloquent 真的太强了!
    有人说不用 ORM 写原生 sql 的,是没写过大项目或者没有重构过吗? sql 到后期根本无法维护
    code4you
    code4you
    Aug 11, 2021
    17
    Prisma + 1 主要是网站和 studio UI 好看 😁 虽然 issue 1k+
    hawei
    hawei
    Aug 11, 2021
    18
    应该用 graphQL 的那套,很快很强大
    keepeye
    keepeye
    Aug 11, 2021
    19
    在 eloquent 面前,go 的几个 orm 也不能打
    xd547
    xd547
    Aug 11, 2021
    20
    Prisma
    4771314
    4771314
    Aug 11, 2021
    21
    @SolidZORO typeorm 的坑是有点多
    EPr2hh6LADQWqRVH
    EPr2hh6LADQWqRVH
    Aug 11, 2021
    22
    小项目根本别用 SQL 数据库,mongodb 不香吗,为什么虐自己

    大项目的那个投入和工程师能力,自己写个适合的数据层,靠谱可控
    lbunderway
    lbunderway
    Aug 11, 2021
    23
    sequelize 应付 crud 完全没问题,复杂的数据统计还是要原生 sql
    L1shen
    L1shen
    Aug 11, 2021
    24
    简单的直接写 knex 也挺好的
    xieren58
    xieren58
    Aug 11, 2021
    25
    Prisma + 1
    randomboi
    randomboi
    Aug 11, 2021
    26
    @SolidZORO adonis 可以的,你用过新版吗
    inhal
    inhal
    Aug 11, 2021
    27
    前两周试了下 Adonis 5,有 Laravel 的感觉,更早版本没用过。
    Smash
    Smash
    OP
    Aug 11, 2021
    28
    @inhal #27 支持服务端渲染吗?还是一个纯 server 侧的框架
    wowbaby
    wowbaby
    Aug 11, 2021
    29
    @SolidZORO 同意,前端更新太快,还要各种兼容,轮子太多五花八门,一句话真 TM 累!每次做项目 70%的时间是在搞前端。
    dream4ever
    dream4ever
    Aug 11, 2021
    30
    @Smash GitHub 的搜索结果默认是按照“Best match”排序的,你切换成按照“Most stars”排序,typeorm 就排第一了。
    dream4ever
    dream4ever
    Aug 11, 2021
    31
    @yoa1q7y
    @code4you
    看了看 typeorm,prisma,sequelize,这三个 repo 的 issues 都是 1200+、1300+,哈哈
    inhal
    inhal
    Aug 11, 2021 via Android
    32
    @Smash 抱歉,我只试写了一下 server api,无法回答这个问题。
    for8ever
    for8ever
    Aug 12, 2021
    33
    推荐 prisma,最近正在使用
    Smash
    Smash
    OP
    Aug 13, 2021
    34
    试用了 Prisma 回来了,给我一种熟悉的体验,这不就根据 schema 文件,生成对应的 orm 代码直接使用吗?

    现在很多库都是这种元编程的模式来生成对应的代码,之前写 Android 的时候用过的 Glide,Dagger2

    写 Golang 的时候用过的 facebook 的 ent.

    缺点就是要多包一层.
    XCFOX
    XCFOX
    Sep 13, 2021
    35
    提名 mikro( https://mikro-orm.io/) 一下,比 TypeOrm 强在隐式事务、自带请求作用域
    ed0522
    ed0522
    Oct 7, 2023
    36
    这三个问题都不少,至少 Sequelize 和 typeorm 文档目录清晰一些,sequelize 最老,可能沉淀的好一些。
    ed0522
    ed0522
    Oct 7, 2023
    37
    @ed0522 Prisma 我遇到好多问题,从安装到使用,听说融资 4000 万 USD 。。。
    LEFT
    LEFT
    Oct 8, 2023 via iPhone
    38
    sequelize 的事务贼难用
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2604 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 68ms · UTC 14:09 · PVG 22:09 · LAX 06:09 · JFK 09:09
    ♥ Do have faith in what you're doing.