我正在尝试在 Nestjs 中为 MongoDB 创建一个数据库连接提供程序。
我user.controller.ts通过放置断点检查了mongoDbProvider 并发现控制器在建立数据库连接之前获取。如何在控制器初始化之前建立数据库连接?
Nest.js 文档说 useFactory 方法将在依赖它的任何其他模块之前运行。
src/mongo-db/mongodb.provider.ts
import { MongoClient } from "mongodb";
import { MONGODB_PROVIDER } from "../constants";
export const mongoDbProviders = [
{
provide: MONGODB_PROVIDER,
useFactory: async () => {
MongoClient.connect('mongodb://localhost:27017',
{ useUnifiedTopology: true },
(error, client) => {
return client.db('nestjs-sample');
});
}
},
];
Run Code Online (Sandbox Code Playgroud)
src/mongo-db/mongo-db.module.ts
import { mongoDbProviders } from './mongo-db.providers';
@Module({
providers: [...mongoDbProviders],
exports: [...mongoDbProviders],
})
export class MongoDbModule {
}
Run Code Online (Sandbox Code Playgroud)
src/constants.ts
export const MONGODB_PROVIDER = 'MONGODB_CONNECTION';
Run Code Online (Sandbox Code Playgroud)
我导入MongoDbModule …