加载 Nestjs 应用程序时,最好的处理方式是什么?

Ron*_* Al 4 nestjs

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

Nik*_*sen 5

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

例如:

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

    onApplicationBootstrap() {
        this.db.doDataInitialization();
    }
}
Run Code Online (Sandbox Code Playgroud)

您不必为此创建一个新服务,您也可以简单地将此挂钩直接放置在您的 AppModule(或任何其他与此相关的模块)中。

您可以在文档中阅读更多内容

在 NestJS 之前

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