0

我已经正确创建了一个提供程序,以使我的 MongoDB 连接可用于我在 NestJS 中的服务,如下所示:

import * as mongodb from "mongodb";

export const databaseProviders = [
  {
    provide: "DATABASE_CONNECTION",
    useFactory: async (): Promise<mongodb.Db> => {
      try {
        const client = await mongodb.MongoClient.connect(process.env.CLUSTER, {
        });
        const db = client.db("test-db");
        return db;
      } catch (error) {
        throw error;
      }
    },
  }
]

我的问题是,我想将动态数据库名称传递给此提供程序,具体取决于从请求发送的数据,例如

const dbName:string = req.body.dbName

所以我将使用 dbName 作为:

const db = client.db(dbName);

我无法弄清楚,因为我只能这样做:

import * as mongodb from "mongodb";

@Injectable()
export class SchoolService {
  constructor(@Inject('DATABASE_CONNECTION') private db:mongodb.Db){}

  async create(createSchoolDto: CreateSchoolDto) {
    const newUser = await this.db.collection('users').insertOne({someData})
    return newUser
  }
}

这仅连接到提供程序内的硬编码 dbName 字符串。

请帮忙!

先感谢您...

4

0 回答 0