📌  相关文章
📜  new Sequelize('featherstutorial', 'databaseUser', 'databasePassword' - Javascript (1)

📅  最后修改于: 2023-12-03 14:44:34.552000             🧑  作者: Mango

使用 Sequelize 连接数据库

Sequelize 是一个基于 Node.js 的 ORM(Object Relational Mapping)框架,用于处理数据库操作。如果你在使用 Node.js 进行 Web 开发并使用了数据库,Sequelize 是一个不错的选择。

本文将介绍如何使用 Sequelize 连接数据库并进行 CRUD 操作。

安装 Sequelize

安装 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'
});

这里的 databaseusernamepassword 分别对应你自己的数据库连接参数。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 操作。