Как передать динамическое имя базы данных поставщику базы данных в NestJS

#javascript #typescript #mongodb #nestjs #nestjs-config

Вопрос:

Я правильно создал провайдера, чтобы сделать мое подключение 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
  }
}
 

И это подключается только к жестко закодированной строке имени базы данных внутри поставщика.

Пожалуйста, помогите!

Заранее спасибо…