#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
}
}
И это подключается только к жестко закодированной строке имени базы данных внутри поставщика.
Пожалуйста, помогите!
Заранее спасибо…