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