如果是经常使用Node来做服务端开发时,肯定不可避免的会操作数据库,做一些增删改查(CRUD,Create Read Update Delete)的操作,如果是一些简单的操作,类似定时脚本什么的,可能就直接生写SQL语句来实现功能了,而如果是在一些大型项目中,数十张、上百张的表,之间还会有一些(一对多,多对多)的映射关系,那么引入一个ORM(Object Relational Mapping)工具来帮助我们与数据库打交道就可以减轻一部分不必要的工作量,Sequelize就是其中比较受欢迎的一个。
CRUD原始版,手动拼接SQL先来举例说明一下直接拼接SQL语句这样比较“底层”的操作方式:
创建这样的一张表,三个字段,自增ID、name以及weight。 如果使用mysql这个包来直接操作数据库大概是这样的:
看起来也还算是比较清晰,但是这样带来的问题就是,开发人员需要对表结构足够的了解。 如果表中有十几个字段,对于开发人员来说这会是很大的记忆成本,你需要知道某个字段是什么类型,拼接SQL时还要注意插入时的顺序及类型,WHERE条件对应的查询参数类型,如果修改某个字段的类型,还要去处理对应的传参。 这样的项目尤其是在进行交接的时候更是一件恐怖的事情,新人又需要从头学习这些表结构。
CRUD进阶版 Sequelize的使用关于记忆这件事情,机器肯定会比人脑更靠谱儿,所以就有了ORM,这里就用到了在Node中比较流行的Sequelize。
ORM首先可能需要解释下ORM是做什么使的,可以简单地理解为,使用面向对象的方式,通过操作对象来实现与数据库之前的交流,完成CRUD的动作。 开发者并不需要关心数据库的类型,也不需要关心实际的表结构,而是根据当前编程语言中对象的结构与数据库中表、字段进行映射。就好比针对上边的animal表进行操作,不再需要在代码中去拼接SQL语句,而是直接调用类似Animal.create,Animal.find就可以完成对应的动作。
Sequelize的使用方式,首先我们要先下载Sequelize的依赖:
npm i sequelize
npm i mysql2
然后在程序中创建一个Sequelize的实例:
抛开模型定义的部分,使用Sequelize无疑减轻了很多使用上的成本,因为模型的定义一般不太会去改变,一次定义多次使用,而使用手动拼接SQL的方式可能就需要将一段SQL改来改去的。
本文暂时没有评论,来添加一个吧(●'◡'●)