V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Smash
V2EX  ›  程序员

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

  •  1
     
  •   Smash · 74 天前 · 2696 次点击
    这是一个创建于 74 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    35 条回复    2021-09-13 00:08:45 +08:00
    wszgrcy
        1
    wszgrcy   74 天前   ❤️ 1
    typeorm
    Smash
        2
    Smash   74 天前
    @wszgrcy #1 为什么我 github 首页搜索 orm,过滤 typescript,居然没在第一页 🐶
    des
        3
    des   74 天前 via iPhone   ❤️ 1
    prisma
    randomboi
        4
    randomboi   74 天前   ❤️ 1
    prisma yyds
    Cbdy
        5
    Cbdy   74 天前 via Android   ❤️ 1
    Sequlize
    SolidZORO
        6
    SolidZORO   74 天前 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 。
    DaTuDou
        7
    DaTuDou   74 天前   ❤️ 1
    Prisma + 1
    yoa1q7y
        8
    yoa1q7y   74 天前
    @des #3
    @randomboi #4 看了下 prisma 的 open issues 有 1200+ 😂
    joyqi
        9
    joyqi   74 天前
    一直用 Sequlize
    mscststs
        10
    mscststs   74 天前
    ORM 简直深坑,现在顶多用 Knex 做一下语法辅助。
    kiddyu
        11
    kiddyu   74 天前
    @SolidZORO #6 adonisjs 不知道怎么样
    SolidZORO
        12
    SolidZORO   74 天前 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 可以选。别的就算了。
    mufeng
        13
    mufeng   73 天前 via iPhone
    Sequlize +1
    xujiahui
        14
    xujiahui   73 天前
    Sequlize
    mywaiting
        15
    mywaiting   73 天前
    感觉简单写个自己的 SQL CURD 的操作封装就好了,没有必要上 ORM 这一套吧

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

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

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

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

    缺点就是要多包一层.
    XCFOX
        35
    XCFOX   41 天前
    提名 mikro( https://mikro-orm.io/) 一下,比 TypeOrm 强在隐式事务、自带请求作用域
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1029 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 22:59 · PVG 06:59 · LAX 15:59 · JFK 18:59
    ♥ Do have faith in what you're doing.