指南 参考 源代码
public class | source

QueryInterface

Sequelize 用于与所有数据库通信的接口

方法概要

公共方法
public

async addColumn(table: string, key: string, attribute: object, options: object): Promise

向表中添加新列

public

async addConstraint(tableName: string, options: object): Promise

向表中添加约束

public

async addIndex(tableName: string | object, attributes: Array, options: object, rawTablename: string): Promise

向列添加索引

public

async bulkDelete(tableName: string, where: object, options: object, model: Model): Promise

从表中删除多条记录

public

async bulkInsert(tableName: string, records: Array, options: object, attributes: object): Promise

向表中插入多条记录

public

async bulkUpdate(tableName: string, values: object, identifier: object, options: object, attributes: object): Promise

更新表中的多条记录

public

async changeColumn(tableName: string, attributeName: string, dataTypeOrOptions: object, options: object): *

更改列定义

public

async createDatabase(database: string, options: object): Promise

创建数据库

public

async createFunction(functionName: string, params: Array, returnType: string, language: string, body: string, optionsArray: Array, options: object): Promise

创建 SQL 函数

public

async createSchema(schema: string, options: object): Promise

创建模式

public

async createTable(tableName: string, attributes: object, options: object, model: Model): Promise

使用给定的属性集创建表

public

async describeTable(tableName: string, options: object): Promise<object>

描述表结构

public

async dropAllSchemas(options: object): Promise

删除所有模式

public

async dropAllTables(options: object): Promise

从数据库中删除所有表

public

async dropDatabase(database: string, options: object): Promise

删除数据库

public

async dropFunction(functionName: string, params: Array, options: object): Promise

删除 SQL 函数

public

async dropSchema(schema: string, options: object): Promise

删除模式

public

async dropTable(tableName: string, options: object): Promise

从数据库中删除表

public

async getForeignKeyReferencesForTable(tableName: string, options: object): *

获取表的外部键引用详细信息

public

async getForeignKeysForTables(tableNames: string[], options: object): Promise

返回请求表的所以外部键约束

public

quoteIdentifier(identifier: string, force: boolean): string

通过 "." 分割标识符列表并引用每个部分

public

quoteIdentifiers(identifiers: string): string

通过 "." 分割标识符列表并引用每个部分。

public

async removeColumn(tableName: string, attributeName: string, options: object): *

从表中删除列

public

异步 removeConstraint(tableName: 字符串, constraintName: 字符串, options: 对象): *

从表中删除约束

public

异步 removeIndex(tableName: 字符串, indexNameOrAttributes: 字符串 | 字符串[], options: 对象): Promise

从表中删除已存在的索引

public

异步 renameColumn(tableName: 字符串, attrNameBefore: 字符串, attrNameAfter: 字符串, options: 对象): Promise

重命名列

public

异步 renameFunction(oldFunctionName: 字符串, params: 数组, newFunctionName: 字符串, options: 对象): Promise

重命名 SQL 函数

public

异步 renameTable(before: 字符串, after: 字符串, options: 对象): Promise

重命名表

public

异步 showAllSchemas(options: 对象): Promise<数组>

显示所有模式

public

异步 tableExists(tableName: TableName, options: QueryOptions): Promise<布尔值>

返回一个 Promise,如果表存在于数据库中,则解析为 true,否则解析为 false。

public

异步 upsert(tableName: 字符串, insertValues: 对象, updateValues: 对象, where: 对象, options: 对象): Promise<布尔值, ?数字>

Upsert

公共方法

public 异步 addColumn(table: 字符串, key: 字符串, attribute: 对象, options: 对象): Promise 源代码

向表中添加新列

queryInterface.addColumn('tableA', 'columnC', Sequelize.STRING, {
   after: 'columnB' // after option is only supported by MySQL
});

参数

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

要添加列的表

key 字符串

列名

attribute 对象

属性定义

options 对象
  • 可选

查询选项

返回值

Promise

public 异步 addConstraint(tableName: 字符串, options: 对象): Promise 源代码

向表中添加约束

可用的约束

  • UNIQUE
  • DEFAULT (仅限 MSSQL)
  • CHECK (MySQL - 被数据库引擎忽略)
  • FOREIGN KEY
  • PRIMARY KEY

参数

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

要添加约束的表名

options 对象

一个对象,用于定义约束名称、类型等

options.type 字符串

约束类型。可用的约束值之一(不区分大小写)

options.fields 数组

要应用约束的列名数组

options.name 字符串
  • 可选

约束的名称。如果未指定,Sequelize 将根据约束类型、表和列名自动创建命名约束

options.defaultValue 字符串
  • 可选

默认约束的值

options.where 对象
  • 可选

CHECK 约束的 where 子句/表达式

options.references 对象
  • 可选

用于指定目标表、列名以创建外键约束的对象

options.references.table 字符串
  • 可选

目标表名

options.references.field 字符串
  • 可选

目标列名

options.references.fields 字符串
  • 可选

用于复合主键的目标列名。必须与 options.fields 中的字段顺序匹配。

options.deferrable 字符串
  • 可选

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

返回值

Promise

示例

UNIQUE
queryInterface.addConstraint('Users', {
  fields: ['email'],
  type: 'unique',
  name: 'custom_unique_constraint_name'
});
CHECK
queryInterface.addConstraint('Users', {
  fields: ['roles'],
  type: 'check',
  where: {
     roles: ['user', 'admin', 'moderator', 'guest']
  }
});
Default - 仅限 MSSQL
queryInterface.addConstraint('Users', {
   fields: ['roles'],
   type: 'default',
   defaultValue: 'guest'
});
Primary Key
queryInterface.addConstraint('Users', {
   fields: ['username'],
   type: 'primary key',
   name: 'custom_primary_constraint_name'
});
Foreign Key
queryInterface.addConstraint('Posts', {
  fields: ['username'],
  type: 'foreign key',
  name: 'custom_fkey_constraint_name',
  references: { //Required field
    table: 'target_table_name',
    field: 'target_column_name'
  },
  onDelete: 'cascade',
  onUpdate: 'cascade'
});
Composite Foreign Key
queryInterface.addConstraint('TableName', {
  fields: ['source_column_name', 'other_source_column_name'],
  type: 'foreign key',
  name: 'custom_fkey_constraint_name',
  references: { //Required field
    table: 'target_table_name',
    fields: ['target_column_name', 'other_target_column_name']
  },
  onDelete: 'cascade',
  onUpdate: 'cascade'
});

public 异步 addIndex(tableName: 字符串 | 对象, attributes: 数组, options: 对象, rawTablename: 字符串): Promise 源代码

向列添加索引

参数

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

要添加索引的表名,可以是包含模式的对象

attributes 数组
  • 可选

请改用 options.fields,要添加索引的属性列表

options 对象

索引选项

options.fields 数组

要添加索引的属性列表

options.concurrently 布尔值
  • 可选

传递 CONCURRENT 以便在创建索引时运行其他操作

options.unique 布尔值
  • 可选

创建唯一索引

options.using 字符串
  • 可选

对 GIN 索引很有用

options.operator 字符串
  • 可选

索引运算符

options.type 字符串
  • 可选

索引类型,可用选项为 UNIQUE|FULLTEXT|SPATIAL

options.name 字符串
  • 可选

索引的名称。默认为 <table><attr1><attr2>

options.where 对象
  • 可选

索引上的 where 条件,用于部分索引

rawTablename 字符串
  • 可选

表名,仅用于向后兼容

返回值

Promise

public 异步 bulkDelete(tableName: 字符串, where: 对象, options: 对象, model: Model): Promise 源代码

从表中删除多条记录

参数

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

要删除记录的表名

where 对象

用于查找要删除记录的 where 条件

options 对象
  • 可选

options

options.truncate 布尔值
  • 可选

使用 truncate table 命令

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

仅与 TRUNCATE 结合使用。截断所有对命名表或由于 CASCADE 添加到该组的任何表具有外键引用的表。

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

仅与 TRUNCATE 结合使用。自动重启被截断表中的列拥有的序列。

model Model
  • 可选

Model

返回值

Promise

public 异步 bulkInsert(tableName: 字符串, records: 数组, options: 对象, attributes: 对象): Promise 源代码

向表中插入多条记录

参数

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

要插入记录的表名

records 数组

要插入的记录列表

options 对象

各种选项,请参阅 Model.bulkCreate 选项

attributes 对象

按字段名称映射的各种属性

返回值

Promise

示例

queryInterface.bulkInsert('roles', [{
   label: 'user',
   createdAt: new Date(),
   updatedAt: new Date()
 }, {
   label: 'admin',
   createdAt: new Date(),
   updatedAt: new Date()
 }]);

public 异步 bulkUpdate(tableName: 字符串, values: 对象, identifier: 对象, options: 对象, attributes: 对象): Promise 源代码

更新表中的多条记录

参数

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

要更新的表名

values 对象

要插入的值,映射到字段名称

identifier 对象

包含条件的哈希或整数 ID 或包含条件的字符串

options 对象
  • 可选

各种选项,请参阅 Model.bulkCreate 选项

attributes 对象
  • 可选

如果 SQL 方言支持,则返回对象上的属性

返回值

Promise

示例

queryInterface.bulkUpdate('roles', {
    label: 'admin',
  }, {
    userType: 3,
  },
);

public async changeColumn(tableName: string, attributeName: string, dataTypeOrOptions: object, options: object): * source

更改列定义

参数

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

要修改的表名

attributeName 字符串

列名

dataTypeOrOptions 对象

新列的属性定义

options 对象
  • 可选

查询选项

返回值

*

public async createDatabase(database: string, options: object): Promise source

创建数据库

参数

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

要创建的数据库名称

options 对象
  • 可选

查询选项

options.charset 字符串
  • 可选

数据库默认字符集,仅限 MYSQL

options.collate 字符串
  • 可选

数据库默认排序规则

options.encoding 字符串
  • 可选

数据库默认字符集,仅限 PostgreSQL

options.ctype 字符串
  • 可选

数据库字符分类,仅限 PostgreSQL

options.template 字符串
  • 可选

用于创建新数据库的模板名称,仅限 PostgreSQL

返回值

Promise

public async createFunction(functionName: string, params: Array, returnType: string, language: string, body: string, optionsArray: Array, options: object): Promise source

创建 SQL 函数

参数

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

要创建的 SQL 函数的名称

params 数组

为 SQL 函数声明的参数列表

returnType 字符串

函数返回值的 SQL 类型

language 字符串

函数实现的语言名称

body 字符串

函数的源代码

optionsArray 数组

创建的额外选项

options 对象
  • 可选

查询选项

options.force 布尔值

如果 force 为 true,则任何具有相同参数的现有函数都将被替换。对于 postgres,这意味着使用 CREATE OR REPLACE FUNCTION 而不是 CREATE FUNCTION。默认值为 false

options.variables Array<object>

已声明变量的列表。每个变量都应是一个具有字符串字段 typename 的对象,并且可以选择具有一个 default 字段。

返回值

Promise

示例

queryInterface.createFunction(
  'someFunction',
  [
    {type: 'integer', name: 'param', direction: 'IN'}
  ],
  'integer',
  'plpgsql',
  'RETURN param + 1;',
  [
    'IMMUTABLE',
    'LEAKPROOF'
  ],
  {
   variables:
     [
       {type: 'integer', name: 'myVar', default: 100}
     ],
     force: true
  };
);

public async createSchema(schema: string, options: object): Promise source

创建模式

参数

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

要创建的模式名称

options 对象
  • 可选

查询选项

返回值

Promise

public async createTable(tableName: string, attributes: object, options: object, model: Model): Promise source

使用给定的属性集创建表

queryInterface.createTable(
  'nameOfTheNewTable',
  {
    id: {
      type: Sequelize.INTEGER,
      primaryKey: true,
      autoIncrement: true
    },
    createdAt: {
      type: Sequelize.DATE
    },
    updatedAt: {
      type: Sequelize.DATE
    },
    attr1: Sequelize.STRING,
    attr2: Sequelize.INTEGER,
    attr3: {
      type: Sequelize.BOOLEAN,
      defaultValue: false,
      allowNull: false
    },
    //foreign key usage
    attr4: {
      type: Sequelize.INTEGER,
      references: {
        model: 'another_table_name',
        key: 'id'
      },
      onUpdate: 'cascade',
      onDelete: 'cascade'
    }
  },
  {
    engine: 'MYISAM',    // default: 'InnoDB'
    charset: 'latin1',   // default: null
    schema: 'public',    // default: public, PostgreSQL only.
    comment: 'my table', // comment for table
    collate: 'latin1_danish_ci' // collation, MYSQL only
  }
)

参数

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

要创建的表名

attributes 对象

表示要创建的表属性列表的对象

options 对象
  • 可选

创建表和查询选项

model Model
  • 可选

模型类

返回值

Promise

public async describeTable(tableName: string, options: object): Promise<object> source

描述表结构

此方法返回一个包含有关表中所有属性的信息的哈希数组。

{
   name: {
     type:         'VARCHAR(255)', // this will be 'CHARACTER VARYING' for pg!
     allowNull:    true,
     defaultValue: null
   },
   isBetaMember: {
     type:         'TINYINT(1)', // this will be 'BOOLEAN' for pg!
     allowNull:    false,
     defaultValue: false
   }
}

参数

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

表名

options 对象
  • 可选

查询选项

返回值

Promise<object>

public async dropAllSchemas(options: object): Promise source

删除所有模式

参数

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

查询选项

返回值

Promise

public async dropAllTables(options: object): Promise source

从数据库中删除所有表

参数

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

查询选项

options.skip 数组
  • 可选

要跳过的表列表

返回值

Promise

public async dropDatabase(database: string, options: object): Promise source

删除数据库

参数

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

要删除的数据库名称

options 对象
  • 可选

查询选项

返回值

Promise

public async dropFunction(functionName: string, params: Array, options: object): Promise source

删除 SQL 函数

参数

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

要删除的 SQL 函数的名称

params 数组

为 SQL 函数声明的参数列表

options 对象
  • 可选

查询选项

返回值

Promise

示例

queryInterface.dropFunction(
  'someFunction',
  [
    {type: 'varchar', name: 'param1', direction: 'IN'},
    {type: 'integer', name: 'param2', direction: 'INOUT'}
  ]
);

public async dropSchema(schema: string, options: object): Promise source

删除模式

参数

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

要删除的模式名称

options 对象
  • 可选

查询选项

返回值

Promise

public async dropTable(tableName: string, options: object): Promise source

从数据库中删除表

参数

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

要删除的表名

options 对象

查询选项

返回值

Promise

public async getForeignKeyReferencesForTable(tableName: string, options: object): * source

获取表的外部键引用详细信息

这些详细信息包含 constraintSchema、constraintName、constraintCatalog tableCatalog、tableSchema、tableName、columnName、referencedTableCatalog、referencedTableCatalog、referencedTableSchema、referencedTableName、referencedColumnName。提醒:如果为 sqlite,则不会返回约束信息。

参数

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

表名

options 对象
  • 可选

查询选项

返回值

*

public async getForeignKeysForTables(tableNames: string[], options: object): Promise source

返回请求表的所以外部键约束

参数

名称类型属性描述
tableNames string[]

表名

options 对象
  • 可选

查询选项

返回值

Promise

public quoteIdentifier(identifier: string, force: boolean): string source

通过 "." 分割标识符列表并引用每个部分

参数

名称类型属性描述
identifier 字符串
force 布尔值

返回值

字符串

public quoteIdentifiers(identifiers: string): string source

通过 "." 分割标识符列表并引用每个部分。

参数

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

返回值

字符串

public async removeColumn(tableName: string, attributeName: string, options: object): * source

从表中删除列

参数

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

要从中删除列的表

attributeName 字符串

要删除的列名

options 对象
  • 可选

查询选项

返回值

*

public async removeConstraint(tableName: string, constraintName: string, options: object): * source

从表中删除约束

参数

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

要从中删除约束的表名

constraintName 字符串

约束名称

options 对象

查询选项

返回值

*

公共的 异步 removeIndex(tableName: 字符串, indexNameOrAttributes: 字符串 | 字符串[], options: 对象): 承诺 来源

从表中删除已存在的索引

参数

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

要从中删除索引的表名

indexNameOrAttributes 字符串 | 字符串[]

索引名称或索引中属性的列表

options 对象
  • 可选

查询选项

options.concurrently 布尔值
  • 可选

传递 CONCURRENTLY 使其他操作在创建索引时运行

返回值

Promise

公共的 异步 renameColumn(tableName: 字符串, attrNameBefore: 字符串, attrNameAfter: 字符串, options: 对象): 承诺 来源

重命名列

参数

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

要重命名列的表名

attrNameBefore 字符串

当前列名

attrNameAfter 字符串

新列名

options 对象
  • 可选

查询选项

返回值

Promise

公共的 异步 renameFunction(oldFunctionName: 字符串, params: 数组, newFunctionName: 字符串, options: 对象): 承诺 来源

重命名 SQL 函数

参数

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

函数的当前名称

params 数组

为 SQL 函数声明的参数列表

newFunctionName 字符串

函数的新名称

options 对象
  • 可选

查询选项

返回值

Promise

示例

queryInterface.renameFunction(
  'fooFunction',
  [
    {type: 'varchar', name: 'param1', direction: 'IN'},
    {type: 'integer', name: 'param2', direction: 'INOUT'}
  ],
  'barFunction'
);

公共的 异步 renameTable(before: 字符串, after: 字符串, options: 对象): 承诺 来源

重命名表

参数

名称类型属性描述
之前 字符串

表的当前名称

之后 字符串

从表中获取新名称

options 对象
  • 可选

查询选项

返回值

Promise

公共的 异步 showAllSchemas(options: 对象): 承诺<数组> 来源

显示所有模式

参数

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

查询选项

返回值

承诺<数组>

公共的 异步 tableExists(tableName: TableName, options: QueryOptions): 承诺<布尔值> 来源

返回一个 Promise,如果表存在于数据库中,则解析为 true,否则解析为 false。

参数

名称类型属性描述
tableName TableName

表的名称

options QueryOptions

查询选项

返回值

承诺<布尔值>

公共的 异步 upsert(tableName: 字符串, insertValues: 对象, updateValues: 对象, where: 对象, options: 对象): 承诺<布尔值, ?数字> 来源

Upsert

参数

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

要进行 upsert 的表

insertValues 对象

要插入的值,映射到字段名

updateValues 对象

要更新的值,映射到字段名

where 对象

where 条件,当 INSERT 失败时可用于 UPDATE 部分

options 对象

查询选项

返回值

承诺<布尔值, ?数字>

解析包含 <created, primaryKey> 的数组