【问题标题】:NestJS: Initialize certain MongoDB collection as soon as connection is madeNestJS:建立连接后立即初始化某些 MongoDB 集合
【发布时间】:2022-01-10 03:21:49
【问题描述】:

我对 NestJs 非常陌生,我想构建一个使用 MongoDB 的 Web 应用程序。 所以我要做的是,只要应用程序加载 mongodb 连接,就应该在回调函数中添加一些逻辑。

有了 Express 框架,这就是我想做的逻辑代码。

mongoose
  .connect(mongoDB, {
    user: process.env.MONGODB_USER,
    pass: process.env.MONGODB_PASSWORD,
    useNewUrlParser: true,
    useUnifiedTopology: true,
  })
  .then(async () => {
    //don't show the log when it is test
    if (process.env.NODE_ENV !== "test") {
      console.log("Connected to %s", mongoDB);
      console.log("MongoDB is connected ... \n");

      initDB.InitializeDB();
      dailyReport.DailyReport();
    }
  })
  .catch((err) => {
    console.error("App starting error:", err.message);
    process.exit(1);
  });

在上面的代码中有两个函数。 第一个:记录数据库连接成功或失败 第二:成功时我会初始化一些集合,如果失败则退出应用程序

我看到了 NestJs 文档来实现这个逻辑here

import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';

@Module({
  imports: [MongooseModule.forRoot('mongodb://localhost/nest')],
})
export class AppModule {}

但我不确定 MongoDB 连接的回调函数在哪里。 谁能通过使用 NestJs 实现 Express 逻辑来给我答案?

【问题讨论】:

  • 在应用模块中你可以添加这个构造函数。构造函数(@InjectConnection() 私有连接:连接){}
  • 您能否提供一些更详细的答案或参考解释处理回调工作流的完整过程?

标签: node.js mongodb nestjs


【解决方案1】:

您可以在 onModuleInit() 生命周期方法中进行初始化。在这里查看更多信息:https://docs.nestjs.com/fundamentals/lifecycle-events#lifecycle-events

代码如下所示:

@Module({
  imports: [MongooseModule.forRoot('mongodb://localhost/nest')],
})
export class AppModule {
  @InjectConnection() private connection: Connection;

  onModuleInit() {
    // execute logic + access mongoDB via this.connection
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 2013-12-12
    • 2020-08-13
    • 1970-01-01
    • 2020-05-15
    相关资源
    最近更新 更多