Sequelize ORM 框架 常用API说明

654 阅读1分钟

Sequelize 是一个 Node.js ORM 框架,用于操作关系型数据库。它支持多种数据库(如 MySQL、PostgreSQL、SQLite、Microsoft SQL Server 等),提供了非常丰富的 API,使得开发者可以方便地进行数据库操作。

以下是一些常用的 Sequelize API 列表 可以让前端开发者不用写sql,也可以操作数据库!

创建连接

const { Sequelize } = require('sequelize');

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

定义模型

const { Sequelize, DataTypes } = require('sequelize');

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

const User = sequelize.define('user', {
  id: {
    type: DataTypes.INTEGER,
    autoIncrement: true,
    primaryKey: true
  },
  name: {
    type: DataTypes.STRING,
    allowNull: false,
    defaultValue: 'John',
    comment: '用户名称'
  },
  email: {
    type: DataTypes.STRING,
    allowNull: true
  }
}, {
  tableName: 'users',
  timestamps: true,
  paranoid: true,
  underscored: true,
  freezeTableName: true,
  comment: '用户表',
  indexes: [
    {
      name: 'name_email_index',
      fields: ['name', 'email']
    }
  ],
  uniqueKeys: [
    {
      name: 'name_key',
      fields: ['name']
    }
  ],
  hooks: {
    beforeCreate: (user, options) => {
      console.log('beforeCreate hook called');
    }
  }
});

同步数据库

sequelize.sync();

插入记录

const user = await User.create({
  name: 'Tom',
  email: 'tom@example.com'
});

更新记录

await user.update({
  name: 'Jerry'
});

删除记录

await user.destroy();

查询记录

const users = await User.findAll({
  where: {
    name: 'Tom'
  },
  attributes: ['id', 'name'],
  include: [
    {
      model: Project,
      attributes: ['id', 'name']
    }
  ],
  order: [
    ['name', 'ASC']
  ],
  limit: 10,
  offset: 0,
  transaction: t
});

使用原生 SQL 查询

const [results, metadata] = await sequelize.query("SELECT * FROM users");