Node.js之数据持久化-DB

1,147 阅读2分钟
背景

Node.js项目由于可能会处理一些数据,所以不可避免的要使用数据库进行持久化处理。

数据库选择

Node.js应用可选择的DB还是比较多的,关系型数据库比如MySQL,PostgreSQL或者小巧的SQLite;非关系型数据库常见的就是MongoDB,也有一些简单的数据会用Redis存储。

ORM

ORM框架是Object Relational Mapping(对象-关系-映射)的简写,所以说ORM框架就是用面向对象的方式和目前的数据库做匹配。 下面是ORM的两种模式:

Active Record 模式:活动记录模式,领域模型模式一个模型类对应关系型数据库中的一个表,模型类的一个实例对应表中的一行记录。

Data Mapper 模式:数据映射模式,领域模型对象和数据表是松耦合关系,只进行业务逻辑的处理,和数据层解耦。需要一个实体管理器来将模型和持久化层做对应。

Data Mapper模式对业务代码干预少,Active Record模式直接在对象上CRUD,代码编写也更方便,这就像java中的hibernate和mybatis两种框架。

Node.js常用的持久化模块

Node.js常用持久化模块等介绍,文章写的很好:www.prisma.io/dataguide/d…

下面列了一下里面比较常用的几个

模块名支持数据库
TypeORMmysql, MariaDB, postgres, CockroachDB, sqlite, Microsoft SQL Server, Oracle, SAP Hana, sql.js
SequelizemysqlpostgressqliteMariaDBMicrosoft SQL ServerAmazon Redshift
mongoosemongodb
primsamysqlpostgressqlitemongodbMicrosoft SQL Server
  • TypeORM既支持Data Mapper,保持很好的灵活性,又支持Active Record模式,能够快速实现持久化功能,支持的数据库也比较多,支持ORM和Query Builder,大型项目推荐使用。
  • Sequelize也是一个使用人群很广的很火的ORM,但是Sequelize目前并不是很活跃,整体来说也有点重,Sequelize只实现了ORM部分,并没有Query Builder部分,新项目应该不是很推荐使用了。
  • mongoose,应该算是一个ODM + Query Builder,如果使用MongoDB的话还是很推荐使用这个ORM的。
  • primsa是一个很新但发展非常迅速的ORM + Query Builder,虽然支持的DB比较少,但是对于要构建大型的前端项目来说使用起来很方便,应该是使用GraphQL必选ORM了,由于有公司运作,后续发展应该也会非常迅速。 primsa官网首页写的是 Next-generation Node.js and TypeScript ORM。但是官网上有一篇文章介绍primsa,讲它并不是ORM,也很有意思,推荐去看看原文:prisma.bootcss.com/understand-…