前言
在现代 Web 应用中,访问数据库并进行操作是不可避免的。而 Sequelize 是一款 Node.js 中流行的 ORM(Object Relational Mapping)框架。ORM 把数据库中的表映射成了 Node.js 对象,从而简化了开发过程。
本文将会介绍 Sequelize 的基础用法,包括配置、表格定义和查询。在阅读完本文后,读者将能够开始使用 Sequelize,实现增删改查等基本操作。
配置 Sequelize
要使用 Sequelize,你需要安装它。可以通过 Npm 包管理器进行安装:
npm install --save sequelize mysql2
安装完成后,你需要引入库并根据自己的需要配置 Sequelize:
const Sequelize = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { dialect: 'mysql', host: 'localhost' });
上述代码展示了如何配置一个连接 MySQL 数据库的 Sequelize 实例。你需要替换 'database'
, 'username'
和 'password'
为你自己的 MySQL 数据库定义。
在这个例子中,我们指定 dialect
参数为 'mysql'
, 这是因为我们使用的是 MySQL 数据库。
定义一个表格
当配置好数据库连接后,下一步是创建一个 Sequelize 模型,from 它可以映射到数据库的一个表。以下是一个如何创建一个表的示例:
-- -------------------- ---- ------- ----- ---- - ------------------------ - ---------- - ----- ---------------- -- --------- - ----- ---------------- -- ------ - ----- ---------------- - --- ----------- ------ ---- ---------- -- - -- ---- ------ ------------- ---------- ------- --------- ------ ------ ---------------------- --- ---
在上述例子中,我们创建了一个名为 'user'
的表,并在里面定义了三个列 'firstName'
, 'lastName'
和 'email'
。每个列都在 sequelize-data-types 中定义。在这个例子中,我们定义了三列的数据类型都是 STRING
。同时,为了更加灵活, Sequelize 还支持其他类型的列。
用 sequelize.define()
函数定义模型后,我们就可以通过 User.sync()
方法创建这张表。sync()
方法会自动在数据库中创建一张表。因为我们的 force
值设置为了 true
,该方法在创建表之前会先删除原有的表格。假设该表格已经存在,force
选项将永久删除它。如果不使用 force
选项,Sequelize 会尝试指定的表格是否存在,如果不存在,则创建它。
查询数据
一旦表格已经定义好,我们需要将数据写入它。Sequelize 提供了如下查询方式,供我们读取数据:
User.findAll().then(users => { console.log(users) })
在上述例子中,我们使用了 User.findAll()
方法返回表格 user
中的所有结果。我们储存并展示了结果。注意,我们使用了 Promise
的 .then()
方法,以便在查询完成时运行回调函数。
此外,Sequelize 的 .create()
方法可用于将数据插入到表格中。以下是一个插入数据的示例:
User.create({ firstName: 'Jane', lastName: 'Doe', email: 'jane.doe@example.com' }).then(user => { console.log(user.toJSON()); });
这将一个名为 jane
的用户插入到表格中,并打印结果。注意,我们使用了 toJSON()
方法对返回结果进行了格式化。
结论
在本文中,我们介绍了如何使用 Sequelize 连接 MySQL 数据库、定义模型和查询数据。这些都是基础概念,让你知道如何开始使用它。Sequelize 还提供了其他更高级的功能,比如范式化、复杂查询和数据验证等等。关注 Sequelize 的文档,并继续探索它的功能,你将会获得更好的体验。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/677274586d66e0f9aad95cb2