Sequelize 在 Express.js 中的应用实例

简介

Sequelize 是一款基于 Promise 的 Node.js ORM(Object-Relational Mapping) 框架,支持 MySQL、PostgreSQL、SQLite 和 MSSQL 等多种数据库,提供了丰富的 API,可以方便地进行数据库操作。本文将介绍如何在 Express.js 中使用 Sequelize,包括安装、配置、模型定义、查询以及关联操作等内容。

安装

使用 npm 安装 Sequelize 和相应的数据库驱动程序:

配置

在 Express.js 项目中,可以在 app.js 或者其他入口文件中,引入 Sequelize,并进行配置:

const Sequelize = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql'
});

其中,'database'、'username' 和 'password' 分别为数据库名称、用户名和密码,host 和 dialect 分别指定数据库的地址和类型。

模型定义

在 Sequelize 中,模型定义类似于数据库表的定义,需要指定表名、字段名、字段类型、主键、外键、索引等信息。下面是一个简单的模型定义示例:

const User = sequelize.define('user', {
  id: {
    type: Sequelize.INTEGER,
    primaryKey: true,
    autoIncrement: true
  },
  name: {
    type: Sequelize.STRING,
    allowNull: false
  },
  email: {
    type: Sequelize.STRING,
    allowNull: false,
    unique: true
  },
  password: {
    type: Sequelize.STRING,
    allowNull: false
  }
});

其中,User 是模型的名称,user 是表名。id、name、email 和 password 分别是字段名,Sequelize.INTEGER、Sequelize.STRING 等是字段类型。autoIncrement 和 primaryKey 分别指定自增和主键,allowNull 和 unique 分别指定是否允许为空和是否唯一。

查询

在 Sequelize 中,查询可以使用多种方式,包括 findAll、findOne、findByPk、create 等。下面是一个示例:

User.findAll({
  where: {
    name: 'John'
  }
}).then(users => {
  console.log(users);
});

User.findOne({
  where: {
    email: 'john@example.com'
  }
}).then(user => {
  console.log(user);
});

User.findByPk(1).then(user => {
  console.log(user);
});

User.create({
  name: 'John',
  email: 'john@example.com',
  password: '123456'
}).then(user => {
  console.log(user);
});

其中,findAll 和 findOne 分别查询多条和一条记录,findByPk 根据主键查询一条记录,create 新增一条记录。

关联操作

在 Sequelize 中,可以方便地进行关联操作,包括一对一、一对多、多对多等关联。下面是一个示例:

const Post = sequelize.define('post', {
  id: {
    type: Sequelize.INTEGER,
    primaryKey: true,
    autoIncrement: true
  },
  title: {
    type: Sequelize.STRING,
    allowNull: false
  },
  content: {
    type: Sequelize.TEXT,
    allowNull: false
  }
});

User.hasMany(Post);
Post.belongsTo(User);

User.findOne({
  where: {
    name: 'John'
  },
  include: Post
}).then(user => {
  console.log(user);
});

User.create({
  name: 'John',
  email: 'john@example.com',
  password: '123456',
  posts: [
    {
      title: 'My first post',
      content: 'Hello, world!'
    }
  ]
}, {
  include: Post
}).then(user => {
  console.log(user);
});

其中,Post 是另外一个模型,表示文章。User.hasMany(Post) 表示一对多关联,Post.belongsTo(User) 表示反向关联。User.findOne 中的 include 表示关联查询,User.create 中的 posts 表示新增关联记录。

总结

Sequelize 是一款强大的 Node.js ORM 框架,可以方便地进行数据库操作,尤其适用于 Express.js 项目。本文介绍了 Sequelize 的安装、配置、模型定义、查询以及关联操作等内容,希望能够对读者有所帮助。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/658a92ddeb4cecbf2dfcad3d


纠错
反馈