次のように、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 文字列にのみ接続します。
助けてください!
前もって感謝します...