【问题标题】:Nestjs with Mongodb native driver problem with injecting the connectionNestjs与Mongodb本机驱动程序注入连接问题
【发布时间】:2021-09-05 22:01:18
【问题描述】:

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

Nest 无法解析 ProjectService (?) 的依赖关系。请做出来 确保索引 [0] 处的参数 DATABASE_CONNECTION 可用 在 AppModule 上下文中。

可能的解决方案:

  • 如果 DATABASE_CONNECTION 是提供程序,它是当前 AppModule 的一部分吗?
  • 如果 DATABASE_CONNECTION 是从单独的 @Module 导出的,那么该模块是否导入到 AppModule 中? @模块({ 导入:[ /* 包含 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();
        }
   }

【问题讨论】:

    标签: mongodb dependency-injection nestjs


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-06-05
      • 2016-06-30
      • 2016-03-13
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      相关资源
      最近更新 更多