nodejs 有哪些好用的增删改查框架? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
iqoo
V2EX    程序员

nodejs 有哪些好用的增删改查框架?

  •  
  •   iqoo 2021-11-28 12:01:42 +08:00 6114 次点击
    这是一个创建于 1416 天前的主题,其中的信息可能已经有所发展或是发生改变。
    后端的功能是服务管理,有几十个增删改查的接口,很多接口都有时间、IP 、备注等参数,有些是必须有些是可选。如果每个接口都手动判断参数是否存在、长度是否正确、格式是否合法,写起来很累赘。最后还要数据库执行,很多接口需要分页,手动实现 SQL 也很累赘。

    有没有简单易用的 nodejs 框架可实现上述提到的功能,例如参数自动校验,只需事先定义参数格式即可。分页等功能也能自动加上。
    29 条回复    2021-11-30 10:07:35 +08:00
    kidonng
        1
    kidonng  
       2021-11-28 12:15:49 +08:00
    这几个都是很基础的需求吧,是个框架都有中间件支持。

    非要说我会推荐 hapi + Joi 验证 + bissle 分页
    kidonng
        2
    kidonng  
       2021-11-28 12:21:21 +08:00
    没注意要接 ORM ,那基本只有 Nest 可选了虽然并不简单易用(?)
    passer9527
        3
    passer9527  
       2021-11-28 13:16:54 +08:00 via iPhone
    这些功能大厂都是手写 sql ,不会用任何 orm 的东西
    dartabe
        4
    dartabe  
       2021-11-28 13:16:58 +08:00
    貌似大厂出来的都喜欢 Hapi 什么时候试试
    aristolochic
        5
    aristolochic  
       2021-11-28 13:23:41 +08:00
    硬要说的话 Nodejs 或者说 Javascript 生态感觉就都不怎么擅长干这种元编程的事情,它的宏能力基本全靠社区实现的 acorn / Babel 之类的了。我找了好久都没找到和 Ruby on Rails 生态的 inherited_resources / responders 类似的东西。要说参数自动校验的话,JOI 肯定算一个,还有 Fastify 也鼓励开发者写参数校验(用的是 JSON Schema ),中间件也还算轻量。

    至于说数据库执行,我认为都用 Javascript 了用一个比较正常的 Secure by Default 的 ORM 还是很必要的,没有特殊需要还是别手动生成 SQL 比较好。很久以前我用过 Sequelize ,不过现在的大一统选择或许是 Prisma 吧,尤其 Prisma 基于 Data Mapper 同时还靠 Schema 文件生成 Client 减少样板代码的设计,让受够 Sequelize 用 Active Record 模式的我十分喜欢(我觉得 Active Record 只有 Rails 这样提倡 Fat Model 的才合适,Sequelize 也是但是太丑了)。
    lscho
        6
    lscho  
       2021-11-28 13:26:18 +08:00
    很多框架都支持,如果让我选,我就选 ThinkJS ,写增删改查很快,感觉完美符合楼主要求。Logic 层配置一下验证方式就行了。
    mchl
        7
    mchl  
       2021-11-28 14:37:49 +08:00 via iPhone
    感觉 Graphql 就是为了解决这种麻烦而诞生的,详搜 Apollo graphql
    henryhu
        8
    henryhu  
       2021-11-28 14:39:26 +08:00
    strapi
    slowgen
        9
    slowgen  
       2021-11-28 15:04:26 +08:00 via Android
    directus ,不够可以在 hook 加一层自己的校验
    pengtdyd
        10
    pengtdyd  
       2021-11-28 15:10:43 +08:00   2
    express 老牌好用,资料多,用的人多
    tousfun
        11
    tousfun  
       2021-11-28 15:29:05 +08:00 via iPhone
    strapi +1
    pendulum
        12
    pendulum  
       2021-11-28 16:46:36 +08:00
    推荐一个:Sequelize 。你说的验证、分页都支持,定义好模型就可以用了,不用接触 SQL 。
    Terry05
        13
    Terry05  
       2021-11-28 18:28:15 +08:00
    今年用了 nestjs + prisma 感受非常好
    guanhui07
        14
    guanhui07  
       2021-11-28 19:24:30 +08:00 via iPhone
    strapi
    lodisy
        15
    lodisy  
       2021-11-28 19:34:36 +08:00 via Android
    同 nestjs + prisma
    code4you
        16
    code4you  
       2021-11-28 19:45:04 +08:00
    nestjs + prisma
    dragonszy
        17
    dragonszy  
       2021-11-28 20:22:32 +08:00
    strapi 或 feathersjs
    lzgshsj
        18
    lzgshsj  
       2021-11-28 20:30:50 +08:00
    前段时间就是看的 nestjs 和 prisma ,api 部署到 vercel ,再配个 planetScale 的数据库服务,全部 serverless 化,还挺好玩的。
    codingBug
        19
    codingBug  
       2021-11-28 20:56:45 +08:00 via Android
    如果限定是 nodejs 的话,推荐 nestjs 。但是对前端来说并不容易。
    lemayi
        20
    lemayi  
       2021-11-28 21:28:12 +08:00
    推荐一下 adonisjs ,按照 Laravel 思路做的。会省很多时间。
    wanguorui123
        21
    wanguorui123  
       2021-11-28 21:44:50 +08:00
    手写个自动生成 SQL 的工具就可以了
    EPr2hh6LADQWqRVH
        22
    EPr2hh6LADQWqRVH  
       2021-11-28 22:59:50 +08:00
    看了这个帖子我放心了,自家的几板斧依然领先。

    LZ 说的这几个基本都到点子上了,本质上想要的就是 dto ,再加上周边的一些设施,声明式验证之类的。
    唯一摸到门槛的就是 nest.js ,其他都在外面刮痧。
    theohateonion
        23
    theohateonion  
       2021-11-28 23:03:04 +08:00
    nestjs 必须有一席之地
    orm typeorm 和 prisma 都很香 crud 一把梭
    hutoer
        24
    hutoer  
       2021-11-29 08:57:29 +08:00
    上面好些个推荐 nestjs ,我觉得更多的是跟风,nestjs 搞得太复杂了,学着 spring 那套,但是比 spring 还烦琐。
    其实 fastify + prisma 就很好:简单明了、心智负担低。
    看看这里:www.prisma.io/fastify
    duduaba
        25
    duduaba  
       2021-11-29 10:08:09 +08:00
    nestjs ,虽然分的比较细繁琐,但是只要写好一个模块其他的都可以复制粘贴了,越用越爽
    YUyu101
        26
    YUyu101  
       2021-11-29 10:40:27 +08:00
    不管啥语言 crud 框架单表查询还行,复杂一点的连表很想死,不连表就只能多次查询,sql+orm 越用越难受,如果有重来的机会直接裸 mongodb 最适合 js ,复杂点的 mongo 查询相当于在写 ast ,但比起 sql 还是舒服点,至少我抽象和封装的对象直接是 ast ,而不是拼装字符串。
    ChangJingli
        27
    ChangJingli  
       2021-11-29 17:42:40 +08:00
    fastify+sequelize
    wangweiggsn
        28
    wangweiggsn  
       2021-11-29 18:04:37 +08:00
    我能说我还是用 access 和 excel 在管理远程 sqlserver 么,感觉一点都不 fashion ,但真的好用,哈哈
    dany813
        29
    dany813  
       2021-11-30 10:07:35 +08:00
    typeorm 老哥们都不推荐吗
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     981 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 22:24 PVG 06:24 LAX 15:24 JFK 18:24
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86