mirror of
https://gitee.com/nocobase/nocobase.git
synced 2024-12-03 12:47:44 +08:00
feat(docs): update model api doc
This commit is contained in:
parent
686474cb38
commit
bad753cd46
@ -30,8 +30,6 @@ interface UpdateAssociationValues {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Examples
|
|
||||||
|
|
||||||
### HasOne
|
### HasOne
|
||||||
|
|
||||||
以用户个人资料 user.profile 为例:
|
以用户个人资料 user.profile 为例:
|
||||||
@ -99,6 +97,21 @@ await user.updateAssociations({
|
|||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
传 `null` 时,可以解除关联
|
||||||
|
|
||||||
|
```ts
|
||||||
|
const user = await User.model.create();
|
||||||
|
await user.updateAssociations({
|
||||||
|
profile: {
|
||||||
|
gender: 'male',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
// 删除关联
|
||||||
|
await user.updateAssociations({
|
||||||
|
profile: null,
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
如果要修改关联数据,需要指定 `updateAssociationValues` 路径,如:
|
如果要修改关联数据,需要指定 `updateAssociationValues` 路径,如:
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
@ -117,8 +130,48 @@ await user.updateAssociations({
|
|||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
updateAssociationValues 只处理当前层级的,如果有 profile.phone 也需要加进来才会更新,例如:
|
||||||
|
|
||||||
|
```ts
|
||||||
|
const Profile = db.collection({
|
||||||
|
name: 'profiles';
|
||||||
|
fields: [
|
||||||
|
{ type: 'string', name: 'gender' },
|
||||||
|
{ type: 'hasOne', name: 'phone' },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
const Phone = db.collection({
|
||||||
|
name: 'phones';
|
||||||
|
fields: [
|
||||||
|
{ type: 'string', name: 'number' },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
const user = await User.model.create();
|
||||||
|
const profile = await Profile.model.create({
|
||||||
|
gender: 'male',
|
||||||
|
});
|
||||||
|
await user.updateAssociations({
|
||||||
|
profile: {
|
||||||
|
id: profile.id,
|
||||||
|
gender: 'female',
|
||||||
|
phone: {
|
||||||
|
number: '12312341234',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
updateAssociationValues: ['profile', 'profile.phone'],
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
暂时不支持泛解析,如 `profile.*`,这种情况较难控制,暂时不支持。
|
||||||
|
|
||||||
<Alert title="注意">
|
<Alert title="注意">
|
||||||
修改关联数据的使用频率较低,用不好破坏性很大,默认只关联并不更新关联数据。如果 JSON 不包含 pk,需要创建并关联处理。
|
|
||||||
|
- 修改关联数据的使用频率较低,用不好破坏性很大,默认只关联并不更新关联数据。
|
||||||
|
- 如果 JSON 不包含 pk,需要创建并关联处理。
|
||||||
|
|
||||||
</Alert>
|
</Alert>
|
||||||
|
|
||||||
如果已经存在关联,解除关联,但不删除关联数据,并与新的数据建立关联
|
如果已经存在关联,解除关联,但不删除关联数据,并与新的数据建立关联
|
||||||
@ -137,7 +190,7 @@ await user.updateAssociations({
|
|||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
## BelongsTo
|
### BelongsTo
|
||||||
|
|
||||||
与 HasOne 的处理机制类似,不过多了个 targetKey 的情况,当 targetKey 不为 id 时,会有些区别:
|
与 HasOne 的处理机制类似,不过多了个 targetKey 的情况,当 targetKey 不为 id 时,会有些区别:
|
||||||
|
|
||||||
@ -167,7 +220,7 @@ await post.updateAssociations({
|
|||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
## HasMany
|
### HasMany
|
||||||
|
|
||||||
可以传 instance
|
可以传 instance
|
||||||
|
|
||||||
@ -282,7 +335,7 @@ await order.updateAssociations({
|
|||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
## BelongsToMany
|
### BelongsToMany
|
||||||
|
|
||||||
常规写法与 HasMany 类似,不过有两个特殊参数 targetKey 和 through。targetKey 与 BelongsTo 类似。through 为实体表时,需要可以更新 through 数据。
|
常规写法与 HasMany 类似,不过有两个特殊参数 targetKey 和 through。targetKey 与 BelongsTo 类似。through 为实体表时,需要可以更新 through 数据。
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ const api = new Server({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const plugins = [
|
const plugins = [
|
||||||
'@nocobase/plugin-multi-apps',
|
// '@nocobase/plugin-multi-apps',
|
||||||
'@nocobase/plugin-ui-router',
|
'@nocobase/plugin-ui-router',
|
||||||
'@nocobase/plugin-ui-schema',
|
'@nocobase/plugin-ui-schema',
|
||||||
'@nocobase/plugin-collections',
|
'@nocobase/plugin-collections',
|
||||||
|
Loading…
Reference in New Issue
Block a user