当前位置: 首页 > 知识库问答 >
问题:

使用nestjs和typeorm保存实体的审核

郜琦
2023-03-14

我有一个实体审计像下面在Nestjs应用程序与typeorm为mongoDB:

@Entity()
export class Audit {

  @Column()
  createdBy: string;

  @BeforeInsert()
  setAudit() {
    this.createdBy = ???
  }
}

@Entity()
export class Post extends Audit {

  @Column()
  title: string;

  ...
}

我的其他实体扩展了审计,在我的应用程序中,我使用jwt来验证用户。

问题是,当我想保存一个实体,我不知道如何设置createdBy与@Before插入钩子...

我知道请求中有用户,但我不知道将用户引入setAudit方法的正确方法是什么?

共有1个答案

潘向明
2023-03-14

您不能直接从TypeORM实体内部访问请求,因为它们在不同的上下文中。相反,您可以通过服务填充CreatedBy字段。

@Injectable()
class DataService {
// ...

   async create({ request, user }): Promise<any> {
    await this.repository.create({...request.body, createdBy: user.id });
   }

// ...
}
 类似资料:
  • 我已经为创建新表和更新后端的TypeORM实体苦苦挣扎了一周。我们将NestJS、GraphQL和TypeORM与PSQL数据库一起使用。我们有一个生产服务器/数据库设置,客户信息已经保存。我正在尝试使用代码优先的方法向数据库中添加一个新表来生成模式。在repo的主分支上,我在本地环境中启动它,并连接到一个干净的数据库。创建帐户并将信息保存到表后,我将切换到一个新分支,该分支包含用于实现新表的代码

  • NestJS的新手,遇到了一个问题。对于我们的部署,我们需要从AWS Parameter Store(Systems Manager)获取配置,包括数据库连接字符串。我有一个配置模块和配置服务,它基于参数存储路径检索我的环境的所有参数存储项: 这是我的配置服务: 下面是主要的应用模块声明块: 如您所见,我正在告诉TypeForm在ConfigService中调用getDatabase()方法,但问

  • 我试图使用项目外部定义的类型orm实体。也就是说,我有两个项目:模型和核心api。Models是导出实体定义的npm包。因此,从核心api(nestjs项目)开始,我尝试使用这些实体定义连接。大概是这样的: 然后,在一个模块中,我从npm包导入A实体: 这将导致下一个错误: 我完全不知道如何跟随,因为我不明白它在引擎盖下是如何工作的。我看到了typeorm和@nestjs/typeorm的代码,但

  • 我试图在我的项目中巧妙地使用DTO和实体,但它似乎比它应该的更复杂。我正在构建一个管理库存的后端,我使用NestJs和TypeOrm。 我的客户向我发送了一组数据抛出POST请求,比如: 我的控制器有责任通过使用自定义ValidationPipe检查字段: 我在许多地方读到,在最佳实践中,原始数据应该转换为DTO,当涉及到数据插入时,我应该将DTO转换为类型化实体。 我同意这种方法,但我发现它非常

  • 有没有办法把这个密码转过来 变成类似这样的东西 我知道需要装饰器,但是当每个属性必须声明属性类型三次或更多次时,SSOT似乎丢失了。 有没有更简单的方法?乔伊?模式生成?

  • 开始新项目与'巢新'命令。工作正常,直到我添加实体文件到它。 出现以下错误: 从“typeorm”导入{Entity,Column,PrimaryGeneratedColumn}; ^^^^^^ 无法在模块外使用导入语句 我错过了什么? 添加实体到模块: 应用程序。单元ts: