6

我正在尝试使用 TypeORM 更新 SQLite3 数据库中的物化路径。文件夹表(我正在更新)同时包含 parent 和 parentId 列。当我更新父列时, parentId 列将更新,但 mpath 列不会更新。

我尝试同时使用 getRepository() 和 getTreeRepository() 进行更新。

我不确定还要添加什么,请参阅下面的附加模型和更新方法。

模型

@Entity()
@Tree('materialized-path')
export class Folder {

  @PrimaryGeneratedColumn()
  id: number;

  @Column({
    type: 'varchar',
    length: 50
  })
  title: string;

  @TreeParent()
  parent: Folder;

  @TreeChildren()
  children: Folder[];

  @Column({
    nullable: true
  })
  parentId: number;

更新

await connection.getTreeRepository<Folder>(Folder).update(id, {
  parent: await connection.getRepository<Folder>(Folder).findOne(parentId)
});
4

1 回答 1

0

我也试过更新功能,不工作。但保存功能还可以。

允许通过存储库中的保存功能更新和删除树实体关系。(参考:https ://github.com/typeorm/typeorm/pull/7156 )

当您使用 save 保存实体时,它总是尝试在数据库中查找具有给定实体 ID(或 ID)的实体。如果找到 id/ids,那么它将更新数据库中的这一行。如果没有具有 id/ids 的行,将插入一个新行。(参考:https ://typeorm.io/#/entities )

于 2022-02-16T09:57:56.990 回答