mirror of
https://gitee.com/nocobase/nocobase.git
synced 2024-12-02 20:27:49 +08:00
Update index.md
This commit is contained in:
parent
b80aec9733
commit
638799fe0e
@ -23,7 +23,7 @@ const database = new Database({
|
|||||||
|
|
||||||
// MySQL \ PostgreSQL database configuration parameters
|
// MySQL \ PostgreSQL database configuration parameters
|
||||||
const database = new Database({
|
const database = new Database({
|
||||||
dialect: /* 'postgres' 或者 'mysql' */,
|
dialect: /* 'postgres' or 'mysql' */,
|
||||||
database: 'database',
|
database: 'database',
|
||||||
username: 'username',
|
username: 'username',
|
||||||
password: 'password',
|
password: 'password',
|
||||||
@ -65,87 +65,85 @@ await database.sync();
|
|||||||
|
|
||||||
Refer to [Collection](/api/database/collection.md) for detailed usage of `Collection`.
|
Refer to [Collection](/api/database/collection.md) for detailed usage of `Collection`.
|
||||||
|
|
||||||
### 数据读写
|
### CRUD Data
|
||||||
|
|
||||||
`Database` 通过 `Repository` 对数据进行操作。
|
`Database` operates data through `Repository`.
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
|
|
||||||
const UserRepository = UserCollection.repository();
|
const UserRepository = UserCollection.repository();
|
||||||
|
|
||||||
// 创建
|
// Create
|
||||||
await UserRepository.create({
|
await UserRepository.create({
|
||||||
name: '张三',
|
name: 'Mark',
|
||||||
age: 18,
|
age: 18,
|
||||||
});
|
});
|
||||||
|
|
||||||
// 查询
|
// Query
|
||||||
const user = await UserRepository.findOne({
|
const user = await UserRepository.findOne({
|
||||||
filter: {
|
filter: {
|
||||||
name: '张三',
|
name: 'Mark',
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// 修改
|
// Update
|
||||||
await UserRepository.update({
|
await UserRepository.update({
|
||||||
values: {
|
values: {
|
||||||
age: 20,
|
age: 20,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// 删除
|
// Delete
|
||||||
await UserRepository.destroy(user.id);
|
await UserRepository.destroy(user.id);
|
||||||
```
|
```
|
||||||
|
|
||||||
更加详细的数据 CRUD 使用方法请参考 [Repository](/api/database/repository.md)。
|
Refer to [Repository](/api/database/repository.md) for details of data CRUD.
|
||||||
|
|
||||||
|
## Constructor
|
||||||
|
|
||||||
## 构造函数
|
**Signature**
|
||||||
|
|
||||||
**签名**
|
|
||||||
|
|
||||||
* `constructor(options: DatabaseOptions)`
|
* `constructor(options: DatabaseOptions)`
|
||||||
|
|
||||||
创建一个数据库实例。
|
Create a database instance.
|
||||||
|
|
||||||
**参数**
|
**Parameter**
|
||||||
|
|
||||||
|
| Name | Type | Default | Description |
|
||||||
| 参数名 | 类型 | 默认值 | 描述 |
|
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| `options.host` | `string` | `'localhost'` | 数据库主机 |
|
| `options.host` | `string` | `'localhost'` | Database host |
|
||||||
| `options.port` | `number` | - | 数据库服务端口,根据使用的数据库有对应默认端口 |
|
| `options.port` | `number` | - | Database service port, there is a default port depending on the database used |
|
||||||
| `options.username` | `string` | - | 数据库用户名 |
|
| `options.username` | `string` | - | Database username |
|
||||||
| `options.password` | `string` | - | 数据库密码 |
|
| `options.password` | `string` | - | Database password|
|
||||||
| `options.database` | `string` | - | 数据库名称 |
|
| `options.database` | `string` | - | Database name |
|
||||||
| `options.dialect` | `string` | `'mysql'` | 数据库类型 |
|
| `options.dialect` | `string` | `'mysql'` | Database type |
|
||||||
| `options.storage?` | `string` | `':memory:'` | SQLite 的存储模式 |
|
| `options.storage?` | `string` | `':memory:'` | Storage mode for SQLite |
|
||||||
| `options.logging?` | `boolean` | `false` | 是否开启日志 |
|
| `options.logging?` | `boolean` | `false` | Whether to enable logging |
|
||||||
| `options.define?` | `Object` | `{}` | 默认的表定义参数 |
|
| `options.define?` | `Object` | `{}` | Default table definition parameters |
|
||||||
| `options.tablePrefix?` | `string` | `''` | NocoBase 扩展,表名前缀 |
|
| `options.tablePrefix?` | `string` | `''` | NocoBase extension, table prefix |
|
||||||
| `options.migrator?` | `UmzugOptions` | `{}` | NocoBase 扩展,迁移管理器相关参数,参考 [Umzug](https://github.com/sequelize/umzug/blob/main/src/types.ts#L15) 实现 |
|
| `options.migrator?` | `UmzugOptions` | `{}` | NocoBase extension, parameters for migrator, refer to [Umzug](https://github.com/sequelize/umzug/blob/main/src/types.ts#L15) for the implementation |
|
||||||
|
|
||||||
## 迁移相关方法
|
## Migration Methods
|
||||||
|
|
||||||
### `addMigration()`
|
### `addMigration()`
|
||||||
|
|
||||||
添加单个迁移文件。
|
Add single migration file.
|
||||||
|
|
||||||
**签名**
|
**Signature**
|
||||||
|
|
||||||
* `addMigration(options: MigrationItem)`
|
* `addMigration(options: MigrationItem)`
|
||||||
|
|
||||||
**参数**
|
**Parameter**
|
||||||
|
|
||||||
| 参数名 | 类型 | 默认值 | 描述 |
|
| Name | Type | Default | Description |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| `options.name` | `string` | - | 迁移文件名称 |
|
| `options.name` | `string` | - | Name of the migration file |
|
||||||
| `options.context?` | `string` | - | 迁移文件的 `up` 方法 |
|
| `options.context?` | `string` | - | Context of the migration file |
|
||||||
| `options.migration?` | `typeof Migration` | - | 迁移文件的自定义类 |
|
| `options.migration?` | `typeof Migration` | - | Custom type of the migration file |
|
||||||
| `options.up` | `Function` | - | 迁移文件的 `up` 方法 |
|
| `options.up` | `Function` | - | `up` method of the migration file |
|
||||||
| `options.down` | `Function` | - | 迁移文件的 `down` 方法 |
|
| `options.down` | `Function` | - | `down` method of the migration file |
|
||||||
|
|
||||||
**示例**
|
**Example**
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
db.addMigration({
|
db.addMigration({
|
||||||
@ -159,22 +157,22 @@ db.addMigration({
|
|||||||
|
|
||||||
### `addMigrations()`
|
### `addMigrations()`
|
||||||
|
|
||||||
添加指定目录下的迁移文件。
|
Add the migration files in the specified directory.
|
||||||
|
|
||||||
**签名**
|
**Signature**
|
||||||
|
|
||||||
* `addMigrations(options: AddMigrationsOptions): void`
|
* `addMigrations(options: AddMigrationsOptions): void`
|
||||||
|
|
||||||
**参数**
|
**Parameter**
|
||||||
|
|
||||||
| 参数名 | 类型 | 默认值 | 描述 |
|
| Name | Type | Default | Description |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| `options.directory` | `string` | `''` | 迁移文件所在目录 |
|
| `options.directory` | `string` | `''` | Directory where the migration files are located |
|
||||||
| `options.extensions` | `string[]` | `['js', 'ts']` | 文件扩展名 |
|
| `options.extensions` | `string[]` | `['js', 'ts']` | File extensions |
|
||||||
| `options.namespace?` | `string` | `''` | 命名空间 |
|
| `options.namespace?` | `string` | `''` | Namespace |
|
||||||
| `options.context?` | `Object` | `{ db }` | 迁移文件的上下文 |
|
| `options.context?` | `Object` | `{ db }` | Context of the migration files |
|
||||||
|
|
||||||
**示例**
|
**Example**
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
db.addMigrations({
|
db.addMigrations({
|
||||||
@ -183,50 +181,50 @@ db.addMigrations({
|
|||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
## 工具方法
|
## Tool Methods
|
||||||
|
|
||||||
### `inDialect()`
|
### `inDialect()`
|
||||||
|
|
||||||
判断当前数据库类型是否为指定类型。
|
Check whether the current database type is the specified type.
|
||||||
|
|
||||||
**签名**
|
**Signature**
|
||||||
|
|
||||||
* `inDialect(dialect: string[]): boolean`
|
* `inDialect(dialect: string[]): boolean`
|
||||||
|
|
||||||
**参数**
|
**Parameter**
|
||||||
|
|
||||||
| 参数名 | 类型 | 默认值 | 描述 |
|
| Name | Type | Default | Description |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| `dialect` | `string[]` | - | 数据库类型,可选值为 `mysql`/`postgres`/`sqlite` |
|
| `dialect` | `string[]` | - | Database type, options are `mysql`, `postgres` and `sqlite` |
|
||||||
|
|
||||||
### `getTablePrefix()`
|
### `getTablePrefix()`
|
||||||
|
|
||||||
获取配置中的表名前缀。
|
Get the table name prefix in the configuration.
|
||||||
|
|
||||||
**签名**
|
**Signature**
|
||||||
|
|
||||||
* `getTablePrefix(): string`
|
* `getTablePrefix(): string`
|
||||||
|
|
||||||
## 数据表配置
|
## Data Table Configuration
|
||||||
|
|
||||||
### `collection()`
|
### `collection()`
|
||||||
|
|
||||||
定义一个数据表。该调用类似与 Sequelize 的 `define` 方法,只在内存中创建表结构,如需持久化到数据库,需要调用 `sync` 方法。
|
Define a data table. This is similar to the `define` method of Sequelize, which only creates table structure in memory. Call the `sync` method if it is needed to be persisted to the database.
|
||||||
|
|
||||||
**签名**
|
**Signature**
|
||||||
|
|
||||||
* `collection(options: CollectionOptions): Collection`
|
* `collection(options: CollectionOptions): Collection`
|
||||||
|
|
||||||
**参数**
|
**Parameter**
|
||||||
|
|
||||||
`options` 所有配置参数与 `Collection` 类的构造函数一致,参考 [Collection](/api/server/database/collection#构造函数)。
|
All configuration parameters of `options` is consistent with the constructor of the `Collection` class, refer to [Collection](/api/server/database/collection#Constructor).
|
||||||
|
|
||||||
**事件**
|
**Event**
|
||||||
|
|
||||||
* `'beforeDefineCollection'`:在定义表之前触发。
|
* `'beforeDefineCollection'`: Trigger before defining the table.
|
||||||
* `'afterDefineCollection'`:在定义表之后触发。
|
* `'afterDefineCollection'`: Trigger after defining the table.
|
||||||
|
|
||||||
**示例**
|
**Example**
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
db.collection({
|
db.collection({
|
||||||
@ -249,19 +247,19 @@ await db.sync();
|
|||||||
|
|
||||||
### `getCollection()`
|
### `getCollection()`
|
||||||
|
|
||||||
获取已定义的数据表。
|
Gets a defined data table.
|
||||||
|
|
||||||
**签名**
|
**Signature**
|
||||||
|
|
||||||
* `getCollection(name: string): Collection`
|
* `getCollection(name: string): Collection`
|
||||||
|
|
||||||
**参数**
|
**Parameter**
|
||||||
|
|
||||||
| 参数名 | 类型 | 默认值 | 描述 |
|
| Name | Type | Default | Description |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| `name` | `string` | - | 表名 |
|
| `name` | `string` | - | Table name |
|
||||||
|
|
||||||
**示例**
|
**Example**
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
const collection = db.getCollection('books');
|
const collection = db.getCollection('books');
|
||||||
@ -269,19 +267,19 @@ const collection = db.getCollection('books');
|
|||||||
|
|
||||||
### `hasCollection()`
|
### `hasCollection()`
|
||||||
|
|
||||||
判断是否已定义指定的数据表。
|
Check whether if a specified data table has been defined.
|
||||||
|
|
||||||
**签名**
|
**Signature**
|
||||||
|
|
||||||
* `hasCollection(name: string): boolean`
|
* `hasCollection(name: string): boolean`
|
||||||
|
|
||||||
**参数**
|
**Parameter**
|
||||||
|
|
||||||
| 参数名 | 类型 | 默认值 | 描述 |
|
| Name | Type | Default | Description |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| `name` | `string` | - | 表名 |
|
| `name` | `string` | - | Table name |
|
||||||
|
|
||||||
**示例**
|
**Example**
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
db.collection({ name: 'books' });
|
db.collection({ name: 'books' });
|
||||||
@ -293,24 +291,24 @@ db.hasCollection('authors'); // false
|
|||||||
|
|
||||||
### `removeCollection()`
|
### `removeCollection()`
|
||||||
|
|
||||||
移除已定义的数据表。仅在内存中移除,如需持久化,需要调用 `sync` 方法。
|
Remove a defined data table; remove from memory only. Call the `sync` method if it is needed to be persisted to the database.
|
||||||
|
|
||||||
**签名**
|
**Signature**
|
||||||
|
|
||||||
* `removeCollection(name: string): void`
|
* `removeCollection(name: string): void`
|
||||||
|
|
||||||
**参数**
|
**Parameter**
|
||||||
|
|
||||||
| 参数名 | 类型 | 默认值 | 描述 |
|
| Name | Type | Default | Description |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| `name` | `string` | - | 表名 |
|
| `name` | `string` | - | Table name |
|
||||||
|
|
||||||
**事件**
|
**Event**
|
||||||
|
|
||||||
* `'beforeRemoveCollection'`:在移除表之前触发。
|
* `'beforeRemoveCollection'`: Trigger before removing the table.
|
||||||
* `'afterRemoveCollection'`:在移除表之后触发。
|
* `'afterRemoveCollection'`: Trigger after removing the table
|
||||||
|
|
||||||
**示例**
|
**Example**
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
db.collection({ name: 'books' });
|
db.collection({ name: 'books' });
|
||||||
@ -320,22 +318,22 @@ db.removeCollection('books');
|
|||||||
|
|
||||||
### `import()`
|
### `import()`
|
||||||
|
|
||||||
导入文件目录下所有文件作为 collection 配置载入内存。
|
Load all files in the import file directory into memory as the configuration of collection.
|
||||||
|
|
||||||
**签名**
|
**Signature**
|
||||||
|
|
||||||
* `async import(options: { directory: string; extensions?: ImportFileExtension[] }): Promise<Map<string, Collection>>`
|
* `async import(options: { directory: string; extensions?: ImportFileExtension[] }): Promise<Map<string, Collection>>`
|
||||||
|
|
||||||
**参数**
|
**Parameter**
|
||||||
|
|
||||||
| 参数名 | 类型 | 默认值 | 描述 |
|
| Name | Type | Default | Description |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| `options.directory` | `string` | - | 要导入的目录路径 |
|
| `options.directory` | `string` | - | Path of directory to be imported |
|
||||||
| `options.extensions` | `string[]` | `['ts', 'js']` | 扫描特定后缀 |
|
| `options.extensions` | `string[]` | `['ts', 'js']` | Scan for specific suffixes |
|
||||||
|
|
||||||
**示例**
|
**Example**
|
||||||
|
|
||||||
`./collections/books.ts` 文件定义的 collection 如下:
|
The collection defined by file `./collections/books.ts` is as below:
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
export default {
|
export default {
|
||||||
@ -349,7 +347,7 @@ export default {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
在插件加载时导入相关配置:
|
Import the relevant configurations when loading the plugin:
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
class Plugin {
|
class Plugin {
|
||||||
@ -361,21 +359,21 @@ class Plugin {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## 扩展注册与获取
|
## Extended Registration and Access
|
||||||
|
|
||||||
### `registerFieldTypes()`
|
### `registerFieldTypes()`
|
||||||
|
|
||||||
注册自定义字段类型。
|
Register custom field types.
|
||||||
|
|
||||||
**签名**
|
**Signature**
|
||||||
|
|
||||||
* `registerFieldTypes(fieldTypes: MapOf<typeof Field>): void`
|
* `registerFieldTypes(fieldTypes: MapOf<typeof Field>): void`
|
||||||
|
|
||||||
**参数**
|
**Parameter**
|
||||||
|
|
||||||
`fieldTypes` 是一个键值对,键为字段类型名称,值为字段类型类。
|
`fieldTypes` is a key-value pair, where key is the field type name and value is the field type class.
|
||||||
|
|
||||||
**示例**
|
**Example**
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
import { Field } from '@nocobase/database';
|
import { Field } from '@nocobase/database';
|
||||||
@ -391,17 +389,17 @@ db.registerFieldTypes({
|
|||||||
|
|
||||||
### `registerModels()`
|
### `registerModels()`
|
||||||
|
|
||||||
注册自定义数据模型类。
|
Register custom data model classes.
|
||||||
|
|
||||||
**签名**
|
**Signature**
|
||||||
|
|
||||||
* `registerModels(models: MapOf<ModelStatic<any>>): void`
|
* `registerModels(models: MapOf<ModelStatic<any>>): void`
|
||||||
|
|
||||||
**参数**
|
**Parameter**
|
||||||
|
|
||||||
`models` 是一个键值对,键为数据模型名称,值为数据模型类。
|
`models` is a key-value pair, where key is the data model name and value is the data model class.
|
||||||
|
|
||||||
**示例**
|
**Example**
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
import { Model } from '@nocobase/database';
|
import { Model } from '@nocobase/database';
|
||||||
|
Loading…
Reference in New Issue
Block a user