什么';加载Nestjs应用程序时,最好的方法是什么?

什么';加载Nestjs应用程序时,最好的方法是什么?,nestjs,Nestjs,当我的Nest.js应用程序加载时,我需要运行一些数据库操作。(主要围绕数据初始化)。所有这些任务都已生成,并在控制器中作为操作使用。如果我手动转到/api/controller/action,它们就会工作。我需要一种在服务器加载时调用它们的方法。有什么建议吗?NestJS公开了一些可以在服务(或其他地方)中实现的生命周期挂钩。您只需创建一个实现所需生命周期挂钩的服务,并将其注册为AppModule的提供者 例如: @Injectable() export class WarmupService

当我的Nest.js应用程序加载时,我需要运行一些数据库操作。(主要围绕数据初始化)。所有这些任务都已生成,并在控制器中作为操作使用。如果我手动转到/api/controller/action,它们就会工作。我需要一种在服务器加载时调用它们的方法。有什么建议吗?

NestJS公开了一些可以在服务(或其他地方)中实现的生命周期挂钩。您只需创建一个实现所需生命周期挂钩的服务,并将其注册为
AppModule
的提供者

例如:

@Injectable()
export class WarmupService implements OnApplicationBootstrap {
    constructor(
        private readonly db: Db
    )

    onApplicationBootstrap() {
        this.db.doDataInitialization();
    }
}
您不必为此创建新的服务,您也可以简单地将此钩子直接放在AppModule(或任何其他模块)中

你可以在网上阅读更多

在NestJS之前 如果您需要在初始化NestJS之前运行一些逻辑(并且上面的生命周期钩子都不匹配),您只需在调用
app.listen(…)
之前在
main.ts
文件中运行它即可