在 Node.js 中使用 Sequelize 可以方便的操作关系型数据库。Sequelize 是一个基于 Promise 的 ORM 框架,支持多种数据库,如 MySQL、PostgreSQL、SQLite、MSSQL 等。本文将为你介绍 Sequelize 的基本概念及使用方式,以帮助你快速掌握它的使用。
安装 Sequelize
安装 Sequelize
使用以下命令安装 Sequelize:
npm install sequelize
同时还需要安装相应的数据库驱动。
比如使用 MySQL,就需要安装 mysql2 驱动:
npm install mysql2
连接数据库
在使用 Sequelize 之前,我们需要通过 Sequelize 构建一个模型,模型代表数据库中的表。在模型之前,我们需要先进行数据库连接。
const Sequelize = require("sequelize"); const sequelize = new Sequelize("database", "username", "password", { host: "localhost", dialect: "mysql", });
上面代码中,构造了一个 Sequelize 的实例,第一个参数为数据库名称,第二个参数为用户名,第三个参数为密码。其中,dialect
表示数据库类型,这里使用 MySQL 数据库。当然,我们还需要指定 host
选项,表示数据库服务器的主机名或 IP 地址。
这样,我们就成功的连接了数据库,接下来就可以创建一个模型了。
创建模型
定义模型
创建一个模型需要定义它的结构和属性,以及它与其他模型之间的关系。
在 Sequelize 中,模型通过 sequelize.define
方法来定义。例如,下面的代码定义了一个 User 表:
-- -------------------- ---- ------- ----- ---- - ------------------------ - --- - ----- ------------------ ----------- ----- -------------- ---- -- ----- - ----- ----------------- ---------- ----- -- ---- - ----- ------------------ ---------- ----- - ---
上面代码中,我们定义了 User 表,并指定了它的主键、自增属性以及三个字段,分别是 id、name 和 age。其中 id 类型为 INTEGER,是主键,自增,name 和 age 类型均为 STRING 和 INTEGER。
定义关联
关联是模型之间的联系,往往指定了一个模型的实例与其他模型的实例之间的关系。
在 Sequelize 中,我们可以通过 belongsTo
、hasOne
、hasMany
和 belongsToMany
等方法来定义不同类型的关联。
belongsTo
方法用于关联两个模型中的一对一关系,如:
-- -------------------- ---- ------- ----- ------- - --------------------------- - ------ ---------------- --- ----- ---- - ------------------------ - ------ ----------------- ------------ -------------- --- ------------------------
上面代码中,我们定义了 Project 模型和 Task 模型,使用 belongsTo
定义了 Task 模型和 Project 模型之间的关系。
hasOne
和 hasMany
方法用于关联两个模型中的一对多关系。
-- -------------------- ---- ------- ----- ---- - ------------------------ - ------ ----------------- --------- ---------------- --- ----- ---- - ------------------------ - ------ ----------------- ------------ -------------- --- -------------------
上面代码中,我们定义了 User 模型和 Task 模型,使用 hasMany
定义了 User 模型和 Task 模型之间的关系。
belongsToMany
方法用于关联两个具有多对多关系的模型,如下面的例子:
-- -------------------- ---- ------- ----- ------- - --------------------------- - ----- ----------------- --- ----- ------ - -------------------------- - ----- ----------------- --- ----------------------------- - -------- --------------- --- ----------------------------- - -------- --------------- ---
上面代码中,我们定义了 Student 模型和 Course 模型,使用 belongsToMany
定义了 Student 模型和 Course 模型之间的关系。
使用模型
定义模型之后,我们就可以使用模型来操作数据库了。
创建记录
使用模型的 create
方法来创建新记录。
-- -------------------- ---- ------- ----- ---- - ------------------------ - --- - ----- ------------------ ----------- ----- -------------- ---- -- ----- - ----- ----------------- ---------- ----- -- ---- - ----- ------------------ ---------- ----- - --- ------ -- -- - ----- ---------------- ------ ---- --- ----- ---- - ----- ------------- ----- ----- ----- ---- -- --- --------------------------- -----
上面代码中,我们使用 create
方法创建一个新的用户记录,并将它指定为 name 为 John Doe,age 为 30。在 create 调用完之后,它将返回一个 Promise,它将 resolve 为插入的记录对象。
查询记录
使用模型的 findOne
或 findAll
方法来查询记录。
-- -------------------- ---- ------- ----- ---- - ------------------------ - --- - ----- ------------------ ----------- ----- -------------- ---- -- ----- - ----- ----------------- ---------- ----- -- ---- - ----- ------------------ ---------- ----- - --- ------ -- -- - ----- ---------------- ------ ---- --- ----- ---- - ----- ------------- ----- ----- ----- ---- -- --- ----- --------- - ----- -------------- ------ - ----- ----- ---- - --- -------------------------------- -----
上面代码中,我们使用 findOne
方法查询 name 为 "John Doe" 的用户,并将查询结果打印出来。
更新记录
使用记录对象的 save
方法来更新数据库中的记录。
-- -------------------- ---- ------- ----- ---- - ------------------------ - --- - ----- ------------------ ----------- ----- -------------- ---- -- ----- - ----- ----------------- ---------- ----- -- ---- - ----- ------------------ ---------- ----- - --- ------ -- -- - ----- ---------------- ------ ---- --- ----- ---- - ----- ------------- ----- ----- ----- ---- -- --- --------- - ----- ----- ----- ------------ --------------------------- -----
上面代码中,我们使用记录对象的 save
方法来更新 name 属性,并将它保存到数据库中。
删除记录
使用记录对象的 destroy
方法来删除数据库中的记录。
-- -------------------- ---- ------- ----- ---- - ------------------------ - --- - ----- ------------------ ----------- ----- -------------- ---- -- ----- - ----- ----------------- ---------- ----- -- ---- - ----- ------------------ ---------- ----- - --- ------ -- -- - ----- ---------------- ------ ---- --- ----- ---- - ----- ------------- ----- ----- ----- ---- -- --- ----- --------------- --------------------------- -----
上面代码中,我们使用记录对象的 destroy
方法来删除数据库中的记录。
总结
通过本文的介绍,相信大家对 Sequelize 的使用方法有了一个初步的了解。Sequelize 作为一个强大的 ORM 框架,对于 Node.js 中的数据库操作是一个非常重要的组成部分。下一步,我们可以在实际项目中运用 Sequelize,从而更好的掌握它的使用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a67eaa48841e9894321368