Nestjs与Mongodb本机驱动程序在注入连接时出现问题



我在Nestjs项目中使用了Mongodb本机节点驱动程序,当我运行nest run命令时,我遇到了以下错误:

Nest无法解析ProjectService(?(的依赖项。请制作请确保索引[0]处的参数DATABASE_CONNECTION可用在AppModule上下文中。

潜在解决方案:

  • 如果DATABASE_CONNECTION是一个提供程序,它是当前AppModule的一部分吗
  • 如果DATABASE_CONNECTION是从一个单独的@Module导出的,那么该模块是在AppModule中导入的吗@模块({imports:[/*包含DATABASE_CONNECTION的模块*/]}(

DATABASE_CONNECTION的提供程序已在数据库模块中定义,数据库模块已导入appModule,我找不到问题。

src/app.module.ts

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { ProjectController } from './project/project.controller';
import { ProjectService } from './project/project.service';
import { DatabaseModule } from './database.module';
@Module({
imports: [DatabaseModule],
controllers: [AppController, ProjectController],
providers: [ProjectService],
})
export class AppModule {}

src/database.module.ts

import { Module } from '@nestjs/common';
import { MongoClient, Db } from 'mongodb';

@Module({
providers: [{
provide: 'DATABASE_CONNECTION',
useFactory: async (): Promise<Db> => {
try {
const client = await MongoClient.connect('mongodb://127.0.0.1:27017', {
useUnifiedTopology: true
});
return client.db('app-test');
} catch(e){
throw e;
}
}
}
],
exports:[
'DATABASE_CONNECTION'
]
})
export class DatabaseModule { }

src/project/project.service.ts

import { Inject, Injectable } from '@nestjs/common';
import { Db } from 'mongodb';
import { Project } from '../models/project.model';

@Injectable()
export class ProjectService {
constructor(
@Inject('DATABASE_CONNECTION')
private db: Db
) {

}

async getProjects(): Promise<Project[]> {
return this.db.collection('Projects').find().toArray();
}
}

我终于修复了这个错误。我删除了dist文件夹的内容,重新构建了项目并启动了它并修复了错误!

我认为这可能会有所帮助https://stackoverflow.com/a/66771530/3141993用于在不手动删除dist文件内容的情况下避免这些类型的错误。

最新更新