Collection 用于定义系统中的数据模型,如模型名称、字段、索引、关联等信息。
一般通过 Database 实例的 collection 方法作为代理入口调用。
更多字段类型请参考 Fields。
签名
constructor(options: CollectionOptions, context: CollectionContext)参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
options.name | string | - | collection 标识 |
options.tableName? | string | - | 数据库表名,如不传则使用 options.name 的值 |
options.fields? | FieldOptions[] | - | 字段定义,详见 Field |
options.model? | string | ModelStatic<Model> | - | Sequelize 的 Model 类型,如果使用的是 string,则需要调用之前在 db 上注册过该模型名称 |
options.repository? | string | RepositoryType | - | 数据仓库类型,如果使用 string,则需要调用之前在 db 上注册过该仓库类型 |
options.sortable? | string | boolean | { name?: string; scopeKey?: string } | - | 数据可排序字段配置,默认不排序 |
options.autoGenId? | boolean | true | 是否自动生成唯一主键,默认为 true |
context.database | Database | - | 所在的上下文环境数据库 |
示例
创建一张文章表:
options数据表配置初始参数。与构造函数的 options 参数一致。
context当前数据表所属的上下文环境,目前主要是数据库实例。
name数据表名称。
db所属数据库实例。
filterTargetKey作为主键的字段名。
isThrough是否为中间表。
model匹配 Sequelize 的 Model 类型。
repository数据仓库实例。
getField()获取数据表已定义对应名称的字段对象。
签名
getField(name: string): Field参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
name | string | - | 字段名称 |
示例
setField()对数据表设置字段。
签名
setField(name: string, options: FieldOptions): Field参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
name | string | - | 字段名称 |
options | FieldOptions | - | 字段配置,详见 Field |
示例
setFields()对数据表批量设置多个字段。
签名
setFields(fields: FieldOptions[], resetFields = true): Field[]参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
fields | FieldOptions[] | - | 字段配置,详见 Field |
resetFields | boolean | true | 是否重置已存在的字段 |
示例
removeField()移除数据表已定义对应名称的字段对象。
签名
removeField(name: string): void | Field参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
name | string | - | 字段名称 |
示例
resetFields()重置(清空)数据表的字段。
签名
resetFields(): void示例
hasField()判断数据表是否已定义对应名称的字段对象。
签名
hasField(name: string): boolean参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
name | string | - | 字段名称 |
示例
findField()查找数据表中符合条件的字段对象。
签名
findField(predicate: (field: Field) => boolean): Field | undefined参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
predicate | (field: Field) => boolean | - | 查找条件 |
示例
forEachField()遍历数据表中的字段对象。
签名
forEachField(callback: (field: Field) => void): void参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
callback | (field: Field) => void | - | 回调函数 |
示例
addIndex()添加数据表索引。
签名
addIndex(index: string | string[] | { fields: string[], unique?: boolean,[key: string]: any })参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
index | string | string[] | - | 需要配置索引的字段名 |
index | { fields: string[], unique?: boolean, [key: string]: any } | - | 完整配置 |
示例
removeIndex()移除数据表索引。
签名
removeIndex(fields: string[])参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
fields | string[] | - | 需要移除索引的字段名组合 |
示例
remove()删除数据表。
签名
remove(): void示例
sync()同步数据表定义到数据库。除了 Sequelize 中默认的 Model.sync 的逻辑,还会一并处理关系字段对应的数据表。
签名
sync(): Promise<void>示例
existsInDb()判断数据表是否存在于数据库中。
签名
existsInDb(options?: Transactionable): Promise<boolean>参数
| 参数名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
options?.transaction | Transaction | - | 事务实例 |
示例
removeFromDb()签名
removeFromDb(): Promise<void>示例