node的orm
 发布于 6 年前  作者 xwadh  7613 次预览  最后一次回复是 6 年前  来自 问答 

请问在做node项目时操作数据库使用orm有什么好的推荐吗或者好的项目,可以分享下,谢谢

23 回复
xwadh

我之前一直是手写的sql,考虑到注入问题被大家一直诟病,所以在找新的解决方案,最近在了解sequelieze

zuohuadong

@xwadh 去了解下 typeorm ,比 seq 好用100倍~

TimLiu1

sequelieze不错

zuohuadong

@TimLiu1 你这也是没看过 typeorm 吧

https://typeorm.io/#/ 右上角切换语言~

还有个比较牛皮的 :

https://www.prisma.io/

CaanDoll

js就sequelize ts就typeorm

waitingsong

@xwadh 如果你不喜欢 orm 可以考虑 query builder 。比如 knex。 正在扩展一个 基于 knex 的轮子。

zy445566

@xwadh 手写sql也没问题啊,预编译不就好了。 就是有些场景手写也不是很方便,比如批量插入啥的。 本人现在就是简单的查询,更新,删除以及插入和批量插入用ORM,其他情况手写SQL。

TimLiu1

@zuohuadong 你简单的说一下优点,解决的痛点问题,然后我认真去看一下。

zuohuadong

@TimLiu1 链接都发给你了,咋能懒到这地步? 你用不用跟我有关系么?

mapleincode

轮子月的 Toshihiko 考虑下,虽然没 Sequelieze 功能多,却功能简化很多。

mapleincode

轮子月的 Toshihiko 考虑下,虽然没 Sequelieze 功能多,却功能简化很多。

http://docs.toshihikojs.com/en/latest/

TimLiu1

@zuohuadong 最主要是对你没信任度啊,周围的人都没接触过,你推荐的你要解释啊,这是一个互相成长的圈子

zuohuadong

@TimLiu1 别人说再多也没用,自己对比就知道了。 另外,typeorm 是 ts 写的~

xwadh

@zy445566 怎么防注入的呢,简单的说下解决方法呢

xwadh

@zuohuadong typeorm的话需要去搞ts那套了吧

xwadh

@waitingsong 期待,我还是比较喜欢手写

xwadh

@mapleincode 好的,谢谢,我去了解下

zuohuadong

@xwadh 也支持 js ,但 ts 装饰器非常好用。 image.png

相关试用: https://ruiming.me/typeorm-worth-a-try/

waitingsong

@xwadh @zuohuadong 新鲜出炉的轮子来了了欢迎食用: https://www.npmjs.com/package/kmore 基于 Knex 扩展了一点功能: 从 DB 表类型中提取表名创建表名对象,用于快速访问表。当然也支持手写 raw sql (db.dbh == knex)。 文档

zuohuadong

@waitingsong 用 ts ,又不用装饰器,真的很别扭。~

顺便推荐个 : prisma ,以及我们在做的 magnus 自动生成…

https://github.com/notadd/magnus

waitingsong

@zuohuadong 看了下 prisma , 很强大。

至于装饰器,不同业务场景有不同需求。 我们的核心项目一百多库表,需求是:

  • 单表可快速访问
  • (数十)多表连接可能需要手写 sql
  • 不允许自动化 DDL,任何表结构变化必须手动执行。

对于单表访问用不上装饰器,多表复杂关联手写sql更是连orm都不可能用(被 mybits 的实体类坑过)。 目前觉得 query builder 应该更适合些。

jyk0011

其实ORM和防止注入没啥关系, 不管用啥ORM,都要面对如何写sql的问题。 只不过使用ORM后,把这个锅甩给了ORM。 MySQL的驱动不是自带防止注入的功能吗?

sunNode

sequelieze 这个 ORM 不好,很多报错莫名奇怪