📅  最后修改于: 2023-12-03 14:44:34.552000             🧑  作者: Mango
Sequelize 是一个基于 Node.js 的 ORM(Object Relational Mapping)框架,用于处理数据库操作。如果你在使用 Node.js 进行 Web 开发并使用了数据库,Sequelize 是一个不错的选择。
本文将介绍如何使用 Sequelize 连接数据库并进行 CRUD 操作。
安装 sequelize
包:
npm install sequelize --save
在 Node.js 中连接数据库需要使用一个驱动包。Sequelize 支持多种 SQL 数据库,包括 MySQL、PostgreSQL、SQLite 和 Microsoft SQL Server 等。
首先要创建一个 Sequelize 对象并传入数据库的连接参数。以下是连接 MySQL 数据库的示例代码:
const Sequelize = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql'
});
这里的 database
、username
和 password
分别对应你自己的数据库连接参数。host
参数指定数据库所在的主机,dialect
参数指定使用的数据库的类型。
在连接成功后,我们可以调用 authenticate()
方法来验证连接是否成功:
sequelize.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.error('Unable to connect to the database:', err);
});
如果连接成功,控制台会打印出 Connection has been established successfully.
。如果失败,则会打印出错误信息。
在 Sequelize 中,我们使用模型来操作数据表。
以下是一个示例模型的定义:
const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql'
});
const User = sequelize.define('User', {
firstName: {
type: DataTypes.STRING,
allowNull: false
},
lastName: {
type: DataTypes.STRING,
allowNull: false
},
age: DataTypes.INTEGER,
email: {
type: DataTypes.STRING,
allowNull: false
},
password: {
type: DataTypes.STRING,
allowNull: false
}
});
这里的 User
对象是一个模型,一个模型对应一个数据表。define()
方法接受两个参数,第一个参数是模型的名称,第二个参数是关于模型的属性和选项的配置对象。
在上面的示例中,我们定义了一些属性,包括 firstName、lastName、age、email 和 password。每个属性都有一个类型,比如字符串 (STRING)、整数 (INTEGER) 等等,还有一些选项来约束该属性的特征,比如不能为 null (allowNull: false)。这些属性将被用来创建对应数据表的列。
定义了模型以后,我们就可以执行一些查询操作了。
// 使用 Promise API
User.create({
firstName: 'John',
lastName: 'Doe',
age: 25,
email: 'johndoe@example.com',
password: '123456'
}).then(user => {
console.log(user.toJSON());
});
// 使用 async/await
async function createUser() {
const user = await User.create({
firstName: 'John',
lastName: 'Doe',
age: 25,
email: 'johndoe@example.com',
password: '123456'
});
console.log(user.toJSON());
}
查询数据可以通过以下方式进行:
User.findAll().then(users => {
console.log(users.map(user => user.toJSON()));
});
User.findByPk(1).then(user => {
console.log(user.toJSON());
});
User.findOne({ where: { email: 'johndoe@example.com' } }).then(user => {
console.log(user.toJSON());
});
User.findAll({
where: {
age: {
[Op.gt]: 25
}
}
}).then(users => {
console.log(users.map(user => user.toJSON()));
});
User.update({ age: 30 }, { where: { email: 'johndoe@example.com' } })
.then(() => {
console.log('Updated successfully.');
});
User.destroy({ where: { email: 'johndoe@example.com' } })
.then(() => {
console.log('Deleted successfully.');
});
Sequelize 是一个实用的 ORM 框架,可用于连接和操作 SQL 数据库。使用 Sequelize 对象创建连接和定义模型后,就可以执行多种 CRUD 操作。