我已经正确创建了一个提供程序,以使我的 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 字符串。
请帮忙!
先感谢您...