指南 参考 源代码
public class | 源代码

Sequelize

这是主类,是 Sequelize 的入口点。

静态方法摘要

静态公共方法
public static

and(args: ...字符串 | 对象): and

AND 查询

自 v2.0.0-dev3 起
public static

cast(val: 任意类型, type: 字符串): cast

创建一个表示对 cast 函数调用的对象。

自 v2.0.0-dev3 起
public static

col(col: 字符串): col

创建一个表示数据库中列的对象,这允许在查询中引用另一列。

自 v2.0.0-dev3 起
public static

fn(fn: 字符串, args: 任意类型): fn

创建一个表示数据库函数的对象。

自 v2.0.0-dev3 起
public static

json(conditionsOrPath: 字符串 | 对象, value: 字符串 | 数字 | 布尔值): json

创建一个表示 PostgreSQL/SQLite/MySQL json 数据类型嵌套 where 条件的对象。

public static

literal(val: 任意类型): literal

创建一个表示字面量的对象,例如

自 v2.0.0-dev3 起
public static

or(args: ...字符串 | 对象): or

OR 查询

自 v2.0.0-dev3 起
public static

在 Sequelize 中使用 CLS(Continuation Local Storage)。

public static

where(attr: 对象, comparator: 符号, logic: 字符串 | 对象): *

指定 attr = condition 的一种方式。

自 v2.0.0-dev3 起

构造函数汇总

公共构造函数
public

constructor(database: 字符串, username: 字符串, password: 字符串, options: 对象)

使用数据库名称、用户名和密码实例化 Sequelize。

成员汇总

公共成员
public

models: {}

模型存储在此处,名称为 sequelize.define 中给出的名称

方法汇总

公共方法
public

异步 authenticate(options: 对象): Promise

通过尝试进行身份验证来测试连接。

public

关闭此 Sequelize 实例使用的所有连接,并释放所有引用,以便可以垃圾回收该实例。

public

异步 createSchema(schema: 字符串, options: 对象): Promise

创建一个新的数据库模式。

public

define(modelName: 字符串, attributes: 对象, options: 对象): Model

定义一个新的模型,表示数据库中的一个表。

public

异步 drop(options: 对象): Promise

删除通过此 Sequelize 实例定义的所有表。

public

异步 dropAllSchemas(options: 对象): Promise

删除所有模式。

public

异步 dropSchema(schema: 字符串, options: 对象): Promise

删除单个模式

public

转义值。

public

返回数据库名称。

public

返回指定的方言。

public

返回 QueryInterface 的一个实例。

public

检查是否定义了具有给定名称的模型

public

model(modelName: 字符串): Model

获取已定义的模型

public

异步 query(sql: 字符串, options: 对象): Promise

在数据库上执行查询,可以选择绕过所有 Sequelize 功能。

public

random(): fn

根据方言获取随机函数。

public

异步 set(variables: 对象, options: 对象): Promise

执行设置环境或用户变量的查询。

public

异步 showAllSchemas(options: 对象): Promise

显示所有已定义的模式

public

异步 sync(options: 对象): Promise

将所有已定义的模型同步到数据库。

public

异步 transaction(options: 对象, autoCallback: 函数): Promise

启动事务。

public

异步 truncate(options: 对象): Promise

截断通过 Sequelize 模型定义的所有表。

静态公共方法

公有 静态 and(args: ...字符串 | 对象): and 自 v2.0.0-dev3 起 来源

AND 查询

参数

名称类型属性描述
args ...字符串 | 对象

每个参数将由 AND 连接。

返回值

and

参见

公有 静态 cast(val: 任意, type: 字符串): cast 自 v2.0.0-dev3 起 来源

创建一个表示对 cast 函数调用的对象。

参数

名称类型属性描述
val 任意

要转换的值

type 字符串

要转换成的类型

返回值

cast

公有 静态 col(col: 字符串): col 自 v2.0.0-dev3 起 来源

创建一个表示数据库中列的对象,这允许在查询中引用另一列。这通常与 sequelize.fn 结合使用很有用,因为 fn 的原始字符串参数将被转义。

参数

名称类型属性描述
col 字符串

列的名称

返回值

col

参见

  • Sequelize#fn

公有 静态 fn(fn: 字符串, args: 任意): fn 自 v2.0.0-dev3 起 来源

创建一个表示数据库函数的对象。这可以在搜索查询中使用,包括 where 和 order 部分,以及列定义中的默认值。如果要引用函数中的列,则应使用 sequelize.col,以便列被正确解释为列而不是字符串。

参数

名称类型属性描述
fn 字符串

您要调用的函数

args 任意

所有后续参数都将作为参数传递给函数。

返回值

fn

示例

将用户的用户名转换为大写
instance.update({
  username: sequelize.fn('upper', sequelize.col('username'))
});

参见

公有 静态 json(conditionsOrPath: 字符串 | 对象, value: 字符串 | 数字 | 布尔值): json 来源

创建一个表示 PostgreSQL/SQLite/MySQL json 数据类型嵌套 where 条件的对象。

参数

名称类型属性描述
conditionsOrPath 字符串 | 对象

包含字符串/数字或其他嵌套哈希的哈希,使用点表示法的字符串或使用 postgres/sqlite/mysql json 语法的字符串。

value 字符串 | 数字 | 布尔值
  • 可选

一个可选的值,用于与之比较。生成形式为“<json 路径> = '<值>'" 的字符串。

返回值

json

参见

公有 静态 literal(val: 任意): literal 自 v2.0.0-dev3 起 来源

创建一个表示字面量的对象,即不会被转义的内容。

参数

名称类型属性描述
val 任意

字面量值

返回值

literal

公有 静态 or(args: ...字符串 | 对象): or 自 v2.0.0-dev3 起 来源

OR 查询

参数

名称类型属性描述
args ...字符串 | 对象

每个参数将由 OR 连接。

返回值

or

参见

公有 静态 useCLS(ns: 对象): 对象 来源

在 Sequelize 中使用 CLS(延续本地存储)。使用延续本地存储,事务回调中的所有查询将自动接收事务对象。

提供的 CLS 命名空间存储为 Sequelize._cls

参数

名称类型属性描述
ns 对象

CLS 命名空间

返回值

对象

Sequelize 构造函数

公有 静态 where(attr: 对象, comparator: 符号, logic: 字符串 | 对象): * 自 v2.0.0-dev3 起 来源

指定 attr = condition 的一种方式。

attr 可以是 Model.rawAttributes 中获取的对象(例如 Model.rawAttributes.idModel.rawAttributes.name)。该属性应在您的模型定义中定义。该属性也可以是来自 Sequelize 实用程序函数之一的对象(sequelize.fnsequelize.col 等)。

对于字符串属性,使用常规的 { where: { attr: something }} 语法。如果不想转义字符串,请使用 sequelize.literal

参数

名称类型属性描述
attr 对象

属性,可以是 Model.rawAttributes 中的属性对象,也可以是 Sequelize 对象,例如 sequelize.fn 的实例。对于简单的字符串属性,请使用 POJO 语法

comparator 符号
  • 可选
  • 默认值:'Op.eq'

操作符

logic 字符串 | 对象

条件。可以是简单类型,也可以是进一步的条件(orand.literal 等)。

返回值

*

参见

公有构造函数

公有 constructor(database: 字符串, username: 字符串, password: 字符串, options: 对象) 来源

使用数据库名称、用户名和密码实例化 Sequelize。

参数

名称类型属性描述
database 字符串
  • 可选

数据库的名称

username 字符串
  • 可选
  • 默认值:null

用于针对数据库进行身份验证的用户名。

password 字符串
  • 可选
  • 默认值:null

用于针对数据库进行身份验证的密码。支持 SQLite 的 SQLCipher 加密。

options 对象
  • 可选
  • 默认值:{}

包含选项的对象。

options.host 字符串
  • 可选
  • 默认值:'localhost'

关系数据库的主机。

options.port 数字
  • 可选

关系数据库的端口。

options.username 字符串
  • 可选
  • 默认值:null

用于针对数据库进行身份验证的用户名。

options.password 字符串
  • 可选
  • 默认值:null

用于针对数据库进行身份验证的密码。

options.database 字符串
  • 可选
  • 默认值:null

数据库的名称。

options.dialect 字符串
  • 可选

您要连接到的数据库的方言。mysql、postgres、sqlite、db2、mariadb 和 mssql 之一。

options.dialectModule 字符串
  • 可选
  • 默认值:null

如果指定,则使用此方言库。例如,如果要使用 pg.js 而不是 pg 连接到 pg 数据库,则应在此处指定“require("pg.js")”

options.dialectModulePath 字符串
  • 可选
  • 默认值:null

如果指定,则从此路径加载方言库。例如,如果要使用 pg.js 而不是 pg 连接到 pg 数据库,则应在此处指定“/path/to/pg.js”

options.dialectOptions 对象
  • 可选

其他选项的对象,这些选项将直接传递给连接库

options.storage 字符串
  • 可选

仅 sqlite 使用。默认为 ':memory:'

options.protocol 字符串
  • 可选
  • 默认值:'tcp'

关系数据库的协议。

options.define 对象
  • 可选
  • 默认值:{}

模型定义的默认选项。请参阅 Model.init

options.query 对象
  • 可选
  • 默认值:{}

sequelize.query 的默认选项

options.schema 字符串
  • 可选
  • 默认值:null

要使用的模式

options.set 对象
  • 可选
  • 默认值:{}

sequelize.set 的默认选项

options.sync 对象
  • 可选
  • 默认值:{}

sequelize.sync 的默认选项

options.timezone 字符串
  • 可选
  • 默认值:'+00:00'

将数据库中的日期转换为 JavaScript 日期时使用的时区。连接到服务器时,此时区也用于 SET TIMEZONE,以确保 NOW、CURRENT_TIMESTAMP 和其他与时间相关的函数的结果具有正确的时区。为了获得最佳的跨平台性能,请使用 +/-HH:MM 格式。还会接受 moment.js 使用的时区的字符串版本(例如“America/Los_Angeles”);这对于捕获夏令时变化很有用。

options.clientMinMessages 字符串 | 布尔值
  • 可选
  • 默认值:'warning'

(已弃用)PostgreSQL 的 client_min_messages 会话参数。设置为 false 以不覆盖数据库的默认值。

options.standardConformingStrings 布尔值
  • 可选
  • 默认值:true

PostgreSQL 的 standard_conforming_strings 会话参数。设置为 false 以不设置该选项。警告:将此设置为 false 可能会导致安全漏洞,不建议使用!

options.logging 函数
  • 可选
  • 默认值:console.log

每次 Sequelize 要记录某些内容时都会执行的函数。函数可能会接收多个参数,但 console.log 仅打印第一个参数。要打印所有值,请使用 (...msg) => console.log(msg)

options.benchmark 布尔值
  • 可选
  • 默认值:false

将查询执行时间(以毫秒为单位)作为第二个参数传递给日志记录函数 (options.logging)。

options.omitNull 布尔值
  • 可选
  • 默认值:false

一个标志,用于定义是否将 null 值作为值传递给 CREATE/UPDATE SQL 查询。

options.native 布尔值
  • 可选
  • 默认值:false

一个标志,用于定义是否应使用原生库。目前仅对 postgres 有效

options.ssl 布尔值
  • 可选
  • 默认值:undefined

一个标志,用于定义连接是否应通过 ssl。

options.replication 布尔值
  • 可选
  • 默认值:false

使用读/写复制。要启用复制,请传递一个对象,该对象具有两个属性 read 和 write。Write 应为一个对象(用于处理写入的单个服务器),而 read 应为一个对象数组(多个服务器用于处理读取)。每个读/写服务器可以具有以下属性:hostportusernamepassworddatabase

options.pool 对象
  • 可选

sequelize 连接池配置

options.pool.max 数字
  • 可选
  • 默认值:5

池中连接的最大数量

options.pool.min 数字
  • 可选
  • 默认值:0

池中连接的最小数量

options.pool.idle 数字
  • 可选
  • 默认值:10000

连接在释放之前可以保持空闲的最长时间(以毫秒为单位)。

options.pool.acquire 数字
  • 可选
  • 默认值:60000

池在抛出错误之前尝试获取连接的最长时间(以毫秒为单位)

options.pool.evict 数字
  • 可选
  • 默认值:1000

sequelize-pool 删除空闲连接的时间间隔(以毫秒为单位)。

options.pool.validate 函数
  • 可选

一个验证连接的函数。使用 client 调用。默认函数检查 client 是否为对象,以及其状态是否未断开连接

options.pool.maxUses 数字
  • 可选
  • 默认值:Infinity

连接在丢弃以进行替换之前可以使用的次数,用于最终的集群重新平衡

options.quoteIdentifiers 布尔值
  • 可选
  • 默认值:true

设置为 false 以使表名和属性在 Postgres 上不区分大小写,并跳过它们的双引号。警告:将此设置为 false 可能会导致安全漏洞,不建议使用!

options.transactionType 字符串
  • 可选
  • 默认值:'DEFERRED'

设置默认事务类型。有关可能的选项,请参阅 Sequelize.Transaction.TYPES。仅限 Sqlite。

options.isolationLevel 字符串
  • 可选

设置默认事务隔离级别。有关可能的选项,请参阅 Sequelize.Transaction.ISOLATION_LEVELS

options.retry 对象
  • 可选

一组控制何时自动重试查询的标志。接受 retry-as-promised 的所有选项。

options.retry.match 数组
  • 可选

仅当错误与这些字符串之一匹配时才重试查询。

options.retry.max 数字
  • 可选

自动重试失败查询的次数。设置为 0 以禁用对 SQL_BUSY 错误的重试。

options.typeValidation 布尔值
  • 可选
  • 默认值:false

在插入和更新以及带有 where 子句的 select 中运行内置类型验证器,例如验证传递给整数字段的参数是否类似于整数。

options.operatorsAliases 对象
  • 可选

基于字符串的操作符别名。传递对象以限制一组具有别名的操作符。

options.hooks 对象
  • 可选

全局钩子函数的对象,这些函数在某些生命周期事件之前和之后调用。全局钩子将在为同一事件定义的任何模型特定钩子之后运行(有关列表,请参阅 Sequelize.Model.init())。此外,还可以在此处定义 beforeConnect()afterConnect()beforeDisconnect()afterDisconnect() 钩子。

options.minifyAliases 布尔值
  • 可选
  • 默认值:false

一个标志,用于定义是否应缩小别名(主要用于避免 Postgres 别名字符限制为 64)

options.logQueryParameters 布尔值
  • 可选
  • 默认值:false

一个标志,用于定义是否在日志中显示绑定参数。

示例

// without password / with blank password
const sequelize = new Sequelize('database', 'username', null, {
  dialect: 'mysql'
})

// with password and options
const sequelize = new Sequelize('my_database', 'john', 'doe', {
  dialect: 'postgres'
})

// with database, username, and password in the options object
const sequelize = new Sequelize({ database, username, password, dialect: 'mssql' });

// with uri
const sequelize = new Sequelize('mysql://127.0.0.1:3306/database', {})

// option examples
const sequelize = new Sequelize('database', 'username', 'password', {
  // the sql dialect of the database
  // currently supported: 'mysql', 'sqlite', 'postgres', 'mssql'
  dialect: 'mysql',

  // custom host; default: localhost
  host: 'my.server.tld',
  // for postgres, you can also specify an absolute path to a directory
  // containing a UNIX socket to connect over
  // host: '/sockets/psql_sockets'.

  // custom port; default: dialect default
  port: 12345,

  // custom protocol; default: 'tcp'
  // postgres only, useful for Heroku
  protocol: null,

  // disable logging or provide a custom logging function; default: console.log
  logging: false,

  // you can also pass any dialect options to the underlying dialect library
  // - default is empty
  // - currently supported: 'mysql', 'postgres', 'mssql'
  dialectOptions: {
    socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock',
    supportBigNumbers: true,
    bigNumberStrings: true
  },

  // the storage engine for sqlite
  // - default ':memory:'
  storage: 'path/to/database.sqlite',

  // disable inserting undefined values as NULL
  // - default: false
  omitNull: true,

  // a flag for using a native library or not.
  // in the case of 'pg' -- set this to true will allow SSL support
  // - default: false
  native: true,

  // A flag that defines if connection should be over ssl or not
  // - default: undefined
  ssl: true,

  // Specify options, which are used when sequelize.define is called.
  // The following example:
  //   define: { timestamps: false }
  // is basically the same as:
  //   Model.init(attributes, { timestamps: false });
  //   sequelize.define(name, attributes, { timestamps: false });
  // so defining the timestamps for each model will be not necessary
  define: {
    underscored: false,
    freezeTableName: false,
    charset: 'utf8',
    dialectOptions: {
      collate: 'utf8_general_ci'
    },
    timestamps: true
  },

  // similar for sync: you can define this to always force sync for models
  sync: { force: true },

  // pool configuration used to pool database connections
  pool: {
    max: 5,
    idle: 30000,
    acquire: 60000,
  },

  // isolation level of each transaction
  // defaults to dialect default
  isolationLevel: Transaction.ISOLATION_LEVELS.REPEATABLE_READ
})

公共成员

public models: {} source

模型存储在此处,名称为 sequelize.define 中给出的名称

公共方法

public 异步 authenticate(options: 对象): Promise source

通过尝试进行身份验证来测试连接。它运行 SELECT 1+1 AS result 查询。

参数

名称类型属性描述
options 对象
  • 可选
  • 默认值:{}

查询选项

返回值

Promise

public close(): Promise source

关闭此 Sequelize 实例使用的所有连接,并释放所有引用,以便可以垃圾回收该实例。

通常在进程退出时完成此操作,因此仅当您创建多个实例并希望垃圾回收其中一些实例时,才需要调用此方法。

返回值

Promise

public 异步 createSchema(schema: 字符串, options: 对象): Promise source

创建一个新的数据库模式。

注意:这是 postgres 意义上的模式,而不是数据库表。在 mysql 和 sqlite 中,此命令将不执行任何操作。

参数

名称类型属性描述
schema 字符串

模式的名称

options 对象
  • 可选
  • 默认值:{}

查询选项

options.logging 布尔值 | 函数
  • 可选

一个记录 sql 查询的函数,或者 false 表示不记录。

返回值

Promise

参见

public define(modelName: 字符串, attributes: 对象, options: 对象): Model source

定义一个新的模型,表示数据库中的一个表。

表列由作为第二个参数给出的对象定义。对象的每个键都表示一个列

参数

名称类型属性描述
modelName 字符串

模型的名称。模型将在此名称下存储在 sequelize.models

attributes 对象

一个对象,其中每个属性都是表的列。请参阅 Model.init

options 对象
  • 可选

这些选项与提供给 Sequelize 构造函数的默认 define 选项合并,并传递给 Model.init()

返回值

Model

新定义的模型

示例

sequelize.define('modelName', {
  columnA: {
      type: Sequelize.BOOLEAN,
      validate: {
        is: ["[a-z]",'i'],        // will only allow letters
        max: 23,                  // only allow values <= 23
        isIn: {
          args: [['en', 'zh']],
          msg: "Must be English or Chinese"
        }
      },
      field: 'column_a'
  },
  columnB: Sequelize.STRING,
  columnC: 'MY VERY OWN COLUMN TYPE'
});

sequelize.models.modelName // The model will now be available in models under the name given to define

参见

public 异步 drop(options: 对象): Promise source

删除通过此 sequelize 实例定义的所有表。这是通过对每个模型调用 Model.drop 来完成的。

参数

名称类型属性描述
options 对象
  • 可选

传递给每个 Model.drop 调用的选项

options.logging 布尔值 | 函数
  • 可选

一个记录 sql 查询的函数,或者 false 表示不记录。

返回值

Promise

参见

public 异步 dropAllSchemas(options: 对象): Promise source

删除所有模式。

注意:这是 postgres 意义上的模式,而不是数据库表。在 mysql 和 sqlite 中,这等效于删除所有表。

参数

名称类型属性描述
options 对象
  • 可选
  • 默认值:{}

查询选项

options.logging 布尔值 | 函数
  • 可选

一个记录 sql 查询的函数,或者 false 表示不记录。

返回值

Promise

public 异步 dropSchema(schema: 字符串, options: 对象): Promise source

删除单个模式

注意:这是 postgres 意义上的模式,而不是数据库表。在 mysql 和 sqlite 中,这将删除与模式名称匹配的表

参数

名称类型属性描述
schema 字符串

模式的名称

options 对象
  • 可选
  • 默认值:{}

查询选项

options.logging 布尔值 | 函数
  • 可选

一个记录 sql 查询的函数,或者 false 表示不记录。

返回值

Promise

public escape(value: 字符串): 字符串 source

转义值。

参数

名称类型属性描述
value 字符串

要转义的字符串值

返回值

字符串

public getDatabaseName(): 字符串 source

返回数据库名称。

返回值

字符串

数据库名称。

public getDialect(): 字符串 source

返回指定的方言。

返回值

字符串

指定的方言。

public getQueryInterface(): QueryInterface source

返回 QueryInterface 的一个实例。

返回值

QueryInterface

QueryInterface 的实例(单例)。

public isDefined(modelName: 字符串): 布尔值 source

检查是否定义了具有给定名称的模型

参数

名称类型属性描述
modelName 字符串

使用 Sequelize.define 定义的模型的名称

返回值

布尔值

如果模型已定义,则返回 true,否则返回 false

public model(modelName: string): Model 源代码

获取已定义的模型

参数

名称类型属性描述
modelName 字符串

使用 Sequelize.define 定义的模型的名称

返回值

Model

指定模型

抛出异常

*

如果模型未定义(即,如果 sequelize#isDefined 返回 false),则会抛出错误。

public async query(sql: string, options: object): Promise 源代码

在数据库上执行查询,可以选择绕过所有 Sequelize 功能。

默认情况下,该函数将返回两个参数:结果数组和元数据对象,其中包含受影响的行数等。

如果您正在运行不需要元数据的查询类型,例如 SELECT 查询,您可以传入查询类型以使 sequelize 格式化结果。

const [results, metadata] = await sequelize.query('SELECT...'); // Raw query - use array destructuring

const results = await sequelize.query('SELECT...', { type: sequelize.QueryTypes.SELECT }); // SELECT query - no destructuring

参数

名称类型属性描述
SQL语句 字符串
options 对象
  • 可选
  • 默认值:{}

查询选项。

options.raw 布尔值
  • 可选

如果为 true,则 sequelize 不会尝试格式化查询结果,也不会根据结果构建模型实例。

options.transaction 事务
  • 可选
  • 默认值:null

查询应在其中执行的事务。

options.type QueryTypes
  • 可选
  • 默认值:'RAW'

您正在执行的查询类型。查询类型会影响结果在传递回之前如何格式化。类型为字符串,但 Sequelize.QueryTypes 提供为方便快捷方式。

options.nest 布尔值
  • 可选
  • 默认值:false

如果为 true,则使用 dottie.js 将具有 . 分隔的属性名称的对象转换为嵌套对象。例如 { 'user.username': 'john' } 变成 { user: { username: 'john' } }。当 nest 为 true 时,查询类型假定为 'SELECT',除非另有指定。

options.plain 布尔值
  • 可选
  • 默认值:false

将查询类型设置为 SELECT 并返回一行。

options.replacements object | Array
  • 可选

格式为 :param 的命名参数替换对象,或用于替换 SQL 中 ? 的未命名替换数组。

options.bind object | Array
  • 可选

格式为 _param 的命名绑定参数对象,或用于替换 SQL 中 $1, $2, ... 的未命名绑定参数数组。

options.useMaster 布尔值
  • 可选
  • 默认值:false

强制查询使用写入池,而不管查询类型。

options.logging 函数
  • 可选
  • 默认值:false

在运行查询时执行以记录 SQL 的函数。

options.instance Model
  • 可选

一个 Sequelize 模型实例,其 Model 用于构建查询结果。

options.model typeof Model
  • 可选

用于构建返回的模型实例的 Sequelize 模型。

options.retry 对象
  • 可选

一组控制何时自动重试查询的标志。接受 retry-as-promised 的所有选项。

options.retry.match 数组
  • 可选

仅当错误与这些字符串之一匹配时才重试查询。

options.retry.max 整数
  • 可选

失败查询自动重试的次数。

options.searchPath 字符串
  • 可选
  • 默认值:DEFAULT

一个可选参数,用于指定模式搜索路径(仅限 Postgres)。

options.supportsSearchPath 布尔值
  • 可选

如果为 false,则不要在查询前加上搜索路径(仅限 Postgres)。

options.mapToModel 布尔值
  • 可选
  • 默认值:false

如果存在 options.modeloptions.instance,则将返回的字段映射到模型的字段。映射将在构建模型实例之前发生。

options.fieldMap 对象
  • 可选

将返回的字段映射到 SELECT 查询类型的任意名称。

options.rawErrors 布尔值
  • 可选
  • 默认值:false

设置为 true 以使来自底层连接/数据库库的错误未经修改且未格式化地传播。否则,默认行为(=false)是将错误重新解释为 sequelize.errors.BaseError 对象。

返回值

Promise

参见

  • 有关实例选项的更多信息,请参阅 Model.build

public random(): fn 源代码

根据方言获取随机函数。

返回值

fn

public async set(variables: object, options: object): Promise 源代码

执行一个查询,该查询将设置环境或用户变量。变量是在每个连接上设置的,因此此函数需要一个事务。仅适用于 MySQL 或 MariaDB。

参数

名称类型属性描述
变量 对象

包含多个变量的对象。

options 对象
  • 可选

查询选项。

options.transaction 事务
  • 可选

查询应在其中执行的事务。

返回值

Promise

public async showAllSchemas(options: object): Promise 源代码

显示所有已定义的模式

注意:这是 Postgres 中的模式意义,而不是数据库表。在 MySQL 和 SQLite 中,这将显示所有表。

参数

名称类型属性描述
options 对象
  • 可选
  • 默认值:{}

查询选项

options.logging 布尔值 | 函数
  • 可选

一个记录 sql 查询的函数,或者 false 表示不记录。

返回值

Promise

public async sync(options: object): Promise 源代码

将所有已定义的模型同步到数据库。

参数

名称类型属性描述
options 对象
  • 可选
  • 默认值:{}

同步选项

options.force 布尔值
  • 可选
  • 默认值:false

如果 force 为 true,则每个 Model 都会在尝试创建自己的表之前运行 DROP TABLE IF EXISTS

options.match 正则表达式
  • 可选

在同步之前对数据库名称进行正则表达式匹配,这是对在测试中使用 force: true 但不在实际代码中使用的情况的安全检查。

options.logging 布尔值 | 函数
  • 可选
  • 默认值:console.log

一个记录 sql 查询的函数,或者 false 表示不记录。

options.schema 字符串
  • 可选
  • 默认值:'public'

应在其中创建表的模式。这可以在 sequelize.define 中为每个表覆盖。

options.searchPath 字符串
  • 可选
  • 默认值:DEFAULT

一个可选参数,用于指定模式搜索路径(仅限 Postgres)。

options.hooks 布尔值
  • 可选
  • 默认值:true

如果 hooks 为 true,则将调用 beforeSync、afterSync、beforeBulkSync、afterBulkSync 钩子。

options.alter boolean | object
  • 可选
  • 默认值:false

更改表以适应模型。提供一个对象以进行其他配置。不建议在生产环境中使用。如果未进一步配置,则会删除已删除或类型在模型中已更改的列中的数据。

options.alter.drop 布尔值
  • 可选
  • 默认值:true

当设置为 false 时,可防止在更改表时出现任何删除语句。

返回值

Promise

public async transaction(options: object, autoCallback: Function): Promise 源代码

启动事务。使用事务时,您应在 options 参数中传递事务,以便查询在该事务下发生 @see Transaction

如果您启用了 CLS,则事务将自动传递到在回调中运行的任何查询。

参数

名称类型属性描述
options 对象
  • 可选

事务选项

options.type 字符串
  • 可选
  • 默认值:'DEFERRED'

有关可能的选项,请参阅 Sequelize.Transaction.TYPES。仅限 Sqlite。

options.isolationLevel 字符串
  • 可选

有关可能的选项,请参阅 Sequelize.Transaction.ISOLATION_LEVELS

options.deferrable 字符串
  • 可选

设置约束是延迟检查还是立即检查。请参阅 Sequelize.Deferrable。仅限 PostgreSQL。

options.readOnly 布尔值
  • 可选

此事务是否仅用于读取数据。用于确定 Sequelize 是否允许使用读取复制服务器。

options.logging 函数
  • 可选
  • 默认值:false

在运行查询时执行以记录 SQL 的函数。

autoCallback 函数
  • 可选

回调使用事务对象调用,并应返回一个 Promise。如果 Promise 已解决,则事务提交;如果 Promise 拒绝,则事务回滚。

返回值

Promise

示例


try {
  const transaction = await sequelize.transaction();
  const user = await User.findOne(..., { transaction });
  await user.update(..., { transaction });
  await transaction.commit();
} catch {
  await transaction.rollback()
}
还支持基于 Promise 链解析自动提交或回滚的语法。

try {
  await sequelize.transaction(transaction => { // Note that we pass a callback rather than awaiting the call with no arguments
    const user = await User.findOne(..., {transaction});
    await user.update(..., {transaction});
  });
  // Committed
} catch(err) {
  // Rolled back
  console.error(err);
}
要启用 CLS,请将其添加到您的项目中,创建一个命名空间并将其设置为 Sequelize 构造函数。

const cls = require('cls-hooked');
const namespace = cls.createNamespace('....');
const Sequelize = require('sequelize');
Sequelize.useCLS(namespace);

// Note, that CLS is enabled for all sequelize instances, and all instances will share the same namespace

public async truncate(options: object): Promise 源代码

截断通过 Sequelize 模型定义的所有表。这是通过在每个模型上调用 Model.truncate() 来完成的。

参数

名称类型属性描述
options 对象
  • 可选

除了截断之外,传递给 Model.destroy 的选项。

options.logging 布尔值 | 函数
  • 可选

一个记录 sql 查询的函数,或者 false 表示不记录。

返回值

Promise

参见