feat(docs): update repository
This commit is contained in:
parent
8562a39c03
commit
d68196ab20
@ -481,17 +481,216 @@ await repository.create({
|
|||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
指定哪些关联字段在建立关联的同时可以更新数据
|
||||||
|
|
||||||
|
```ts
|
||||||
|
// 原 tag=1 的数据
|
||||||
|
// { id: 1, name: 'tag1' }
|
||||||
|
|
||||||
|
await repository.create({
|
||||||
|
values: {
|
||||||
|
name: 'post1',
|
||||||
|
tags: [{
|
||||||
|
id: 1,
|
||||||
|
name: 'tag123', // name 与原数据不一样
|
||||||
|
}],
|
||||||
|
},
|
||||||
|
// 指定了 tags,建立关联时,也会同步修改 tag 数据
|
||||||
|
updateAssociations: ['tags'],
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
全览
|
||||||
|
|
||||||
|
```ts
|
||||||
|
await repository.create({
|
||||||
|
// 待存数据
|
||||||
|
values: {
|
||||||
|
a: 'a',
|
||||||
|
// 快速建立关联
|
||||||
|
o2o: 1, // 建立一对一关联
|
||||||
|
m2o: 1, // 建立多对一关联
|
||||||
|
o2m: [1,2] // 建立一对多关联
|
||||||
|
m2m: [1,2] // 建立多对多关联
|
||||||
|
// 新建关联数据并建立关联
|
||||||
|
o2o: {
|
||||||
|
key1: 'val1',
|
||||||
|
},
|
||||||
|
o2m: [{key1: 'val1'}, {key2: 'val2'}],
|
||||||
|
// 子表格数据
|
||||||
|
subTable: [
|
||||||
|
// 如果数据存在,更新处理
|
||||||
|
{id: 1, key1: 'val1111'},
|
||||||
|
// 如果数据不存在,直接创建并关联
|
||||||
|
{key2: 'val2'},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
// 字段白名单
|
||||||
|
whitelist: [],
|
||||||
|
// 字段黑名单
|
||||||
|
blacklist: [],
|
||||||
|
// 关系数据默认会新建并建立关联处理,如果是已存在的数据只关联,但不更新关系数据
|
||||||
|
// 如果需要更新关联数据,可以通过 updateAssociations 指定
|
||||||
|
updateAssociations: ['subTable'],
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
## repository.update()
|
## repository.update()
|
||||||
|
|
||||||
|
更新数据
|
||||||
|
|
||||||
|
##### Definition
|
||||||
|
|
||||||
|
```ts
|
||||||
|
interface update<M extends Sequelize.Model> {
|
||||||
|
(options: UpdateOptions): Promise<M>
|
||||||
|
}
|
||||||
|
|
||||||
|
interface UpdateOptions {
|
||||||
|
filter?: any;
|
||||||
|
filterByPk?: number | string;
|
||||||
|
// 数据
|
||||||
|
values?: any;
|
||||||
|
// 字段白名单
|
||||||
|
whitelist?: string[];
|
||||||
|
// 字段黑名单
|
||||||
|
blacklist?: string[];
|
||||||
|
// 关系数据默认会新建并建立关联处理,如果是已存在的数据只关联,但不更新关系数据
|
||||||
|
// 如果需要更新关联数据,可以通过 updateAssociations 指定
|
||||||
|
updateAssociations?: string[];
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Examples
|
||||||
|
|
||||||
|
全部改
|
||||||
|
|
||||||
|
```ts
|
||||||
|
await repository.update({
|
||||||
|
values: {
|
||||||
|
a: 'b'
|
||||||
|
},
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
只改某条数据
|
||||||
|
|
||||||
|
```ts
|
||||||
|
await repository.update({
|
||||||
|
filterByPk: 1,
|
||||||
|
values: {
|
||||||
|
a: 'b'
|
||||||
|
},
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
指定范围修改
|
||||||
|
|
||||||
|
```ts
|
||||||
|
await repository.update({
|
||||||
|
filter: {
|
||||||
|
name: 'post1.1'
|
||||||
|
},
|
||||||
|
values: {
|
||||||
|
name: 'post1.2'
|
||||||
|
},
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
## repository.destroy()
|
## repository.destroy()
|
||||||
|
|
||||||
|
删除数据
|
||||||
|
|
||||||
|
##### Definition
|
||||||
|
|
||||||
|
```ts
|
||||||
|
interface destroy {
|
||||||
|
(options?: number | string | number[] | string[] | DestroyOptions): Promise<boolean | boolean[]>
|
||||||
|
}
|
||||||
|
|
||||||
|
interface DestroyOptions {
|
||||||
|
filter?: any;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Examples
|
||||||
|
|
||||||
|
指定 primary key 值
|
||||||
|
|
||||||
|
```ts
|
||||||
|
repository.destroy(1);
|
||||||
|
```
|
||||||
|
|
||||||
|
批量 primary key 值
|
||||||
|
|
||||||
|
```ts
|
||||||
|
repository.destroy([1, 2, 3]);
|
||||||
|
```
|
||||||
|
|
||||||
|
复杂的 filter
|
||||||
|
|
||||||
|
```ts
|
||||||
|
repository.destroy({
|
||||||
|
filter: {},
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
## repository.relation().of()
|
## repository.relation().of()
|
||||||
|
|
||||||
### find()
|
##### Definition
|
||||||
### findOne()
|
|
||||||
### create()
|
```ts
|
||||||
### update()
|
interface relation {
|
||||||
### destroy()
|
(name: string): {
|
||||||
### set()
|
of: (parent: any): RelationRepository;
|
||||||
### add()
|
}
|
||||||
### remove()
|
}
|
||||||
### toggle()
|
|
||||||
|
// 关系数据的增删改查在 NocoBase 里非常重要
|
||||||
|
class RelationRepository {
|
||||||
|
find() {}
|
||||||
|
findOne() {}
|
||||||
|
create() {}
|
||||||
|
update() {}
|
||||||
|
destroy() {}
|
||||||
|
set() {}
|
||||||
|
add() {}
|
||||||
|
remove() {}
|
||||||
|
toggle() {}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Examples
|
||||||
|
|
||||||
|
find、findOne、create、update 和 destroy 和常规 Repository API 层面是一致,这里重点列举关联操作的几个方法:
|
||||||
|
|
||||||
|
```ts
|
||||||
|
// user_id = 1 的 post 的 relatedQuery
|
||||||
|
const userPostsRepository = repository.relation('posts').of(1);
|
||||||
|
|
||||||
|
// 建立关联
|
||||||
|
userPostsRepository.set(1);
|
||||||
|
|
||||||
|
// 批量,仅用于 HasMany 和 BelongsToMany
|
||||||
|
userPostsRepository.set([1,2,3]);
|
||||||
|
|
||||||
|
// BelongsToMany 的中间表
|
||||||
|
userPostsRepository.set([
|
||||||
|
[1, {/* 中间表数据 */}],
|
||||||
|
[2, {/* 中间表数据 */}],
|
||||||
|
[3, {/* 中间表数据 */}],
|
||||||
|
]);
|
||||||
|
|
||||||
|
// 仅用于 HasMany 和 BelongsToMany
|
||||||
|
userPostsRepository.add(1);
|
||||||
|
|
||||||
|
// BelongsToMany 的中间表
|
||||||
|
userPostsRepository.add(1, {/* 中间表数据 */});
|
||||||
|
|
||||||
|
// 删除关联
|
||||||
|
userPostsRepository.remove(1);
|
||||||
|
|
||||||
|
// 建立或解除
|
||||||
|
userPostsRepository.toggle(1);
|
||||||
|
userPostsRepository.toggle([1, 2, 3]);
|
||||||
|
```
|
||||||
|
Loading…
Reference in New Issue
Block a user