QueryInterface
直接子类
Sequelize 用于与所有数据库通信的接口
方法概要
公共方法 | ||
public |
向表中添加新列 |
|
public |
async addConstraint(tableName: string, options: object): Promise 向表中添加约束 |
|
public |
async addIndex(tableName: string | object, attributes: Array, options: object, rawTablename: string): Promise 向列添加索引 |
|
public |
从表中删除多条记录 |
|
public |
向表中插入多条记录 |
|
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 |
使用给定的属性集创建表 |
|
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 |
从数据库中删除表 |
|
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 |
从表中删除已存在的索引 |
|
public |
重命名列 |
|
public |
重命名 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
});
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 |
示例
queryInterface.addConstraint('Users', {
fields: ['email'],
type: 'unique',
name: 'custom_unique_constraint_name'
});
queryInterface.addConstraint('Users', {
fields: ['roles'],
type: 'check',
where: {
roles: ['user', 'admin', 'moderator', 'guest']
}
});
queryInterface.addConstraint('Users', {
fields: ['roles'],
type: 'default',
defaultValue: 'guest'
});
queryInterface.addConstraint('Users', {
fields: ['username'],
type: 'primary key',
name: 'custom_primary_constraint_name'
});
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'
});
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 | 字符串 |
|
表名,仅用于向后兼容 |
public 异步 bulkDelete(tableName: 字符串, where: 对象, options: 对象, model: Model): Promise 源代码
从表中删除多条记录
参数
名称 | 类型 | 属性 | 描述 |
tableName | 字符串 | 要删除记录的表名 |
|
where | 对象 | 用于查找要删除记录的 where 条件 |
|
options | 对象 |
|
options |
options.truncate | 布尔值 |
|
使用 truncate table 命令 |
options.cascade | 布尔值 |
|
仅与 TRUNCATE 结合使用。截断所有对命名表或由于 CASCADE 添加到该组的任何表具有外键引用的表。 |
options.restartIdentity | 布尔值 |
|
仅与 TRUNCATE 结合使用。自动重启被截断表中的列拥有的序列。 |
model | Model |
|
Model |
public 异步 bulkInsert(tableName: 字符串, records: 数组, options: 对象, 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 源代码
更新表中的多条记录
示例
queryInterface.bulkUpdate('roles', {
label: 'admin',
}, {
userType: 3,
},
);
public async changeColumn(tableName: string, attributeName: string, dataTypeOrOptions: object, options: object): * source
更改列定义
返回值
* |
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,这意味着使用 |
|
options.variables | Array<object> | 已声明变量的列表。每个变量都应是一个具有字符串字段 |
示例
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 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
}
)
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
}
}
public async dropFunction(functionName: string, params: Array, options: object): Promise source
删除 SQL 函数
示例
queryInterface.dropFunction(
'someFunction',
[
{type: 'varchar', name: 'param1', direction: 'IN'},
{type: 'integer', name: 'param2', direction: 'INOUT'}
]
);
public async getForeignKeyReferencesForTable(tableName: string, options: object): * source
获取表的外部键引用详细信息
这些详细信息包含 constraintSchema、constraintName、constraintCatalog tableCatalog、tableSchema、tableName、columnName、referencedTableCatalog、referencedTableCatalog、referencedTableSchema、referencedTableName、referencedColumnName。提醒:如果为 sqlite,则不会返回约束信息。
返回值
* |
public async getForeignKeysForTables(tableNames: string[], options: object): Promise source
返回请求表的所以外部键约束
public quoteIdentifiers(identifiers: string): string source
通过 "." 分割标识符列表并引用每个部分。
参数
名称 | 类型 | 属性 | 描述 |
identifiers | 字符串 |
public async removeColumn(tableName: string, attributeName: string, options: object): * source
从表中删除列
返回值
* |
public async removeConstraint(tableName: string, constraintName: string, options: object): * source
从表中删除约束
返回值
* |
公共的 异步 removeIndex(tableName: 字符串, indexNameOrAttributes: 字符串 | 字符串[], options: 对象): 承诺 来源
从表中删除已存在的索引
公共的 异步 renameColumn(tableName: 字符串, attrNameBefore: 字符串, attrNameAfter: 字符串, options: 对象): 承诺 来源
重命名列
公共的 异步 renameFunction(oldFunctionName: 字符串, params: 数组, newFunctionName: 字符串, options: 对象): 承诺 来源
重命名 SQL 函数
示例
queryInterface.renameFunction(
'fooFunction',
[
{type: 'varchar', name: 'param1', direction: 'IN'},
{type: 'integer', name: 'param2', direction: 'INOUT'}
],
'barFunction'
);
公共的 异步 tableExists(tableName: TableName, options: QueryOptions): 承诺<布尔值> 来源
返回一个 Promise,如果表存在于数据库中,则解析为 true,否则解析为 false。
参数
名称 | 类型 | 属性 | 描述 |
tableName | TableName | 表的名称 |
|
options | QueryOptions | 查询选项 |