更新节点
更新说明
由于树是存储在数据库表中,每个节点对应一条记录,所以更新节点的操作就是更新数据库表中的对应记录。
原则上,您可以直接使用您最熟悉的数据库操作方式(比如prisma,typeORM等)来更新节点,但是需要特别需要注意以下几点:
- 不能直接更新
leftValue、rightValue、level、treeId等树依赖的关健字段,因为这些字段是根据树的结构自动生成的,直接更新将导致树结构被破坏。 - 由于
FlexTree的节点是可以扩展的,除了树的关键字段外,您可以自定义其他字段,这些字段是可以直接更新的。
特殊注意
不能直接更新leftValue、rightValue、level、treeId等树依赖的关健字段
update
为了方便您的操作,我们提供了一个简单的update方法,只能用于更新非关键字段。
ts
async update(node: Partial<TreeNode> | Partial<TreeNode>[]): Promise<void>- 参数
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
node | Partial<TreeNode> | Partial<TreeNode>[] | 无 | 要更新的节点或节点数组 |
- 返回
| 类型 | 描述 |
|---|---|
Promise\<void\> | 无 |
- 示例
ts
const node = await tree.update({
id: 1,
name: 'new name',
description: 'new description'
});说明
- 当您使用
update方法时,会过滤掉leftValue、rightValue、level、treeId等关键字段,以避免意外破坏树结构。 - 由于
update方法不会涉及到对树的结构更新,所以可以不用在write方法中执行。
- 当您使用