node.js - Hur man skapar och stänger en databasanslutning dynamiskt med Request Scope Providers i Nestjs?


Jag arbetar på ett projekt med Nestjs 7.x, Mongoose, Mongo, etc. När det gäller backend, i mitt användningsfall måste jag ändra anslutningen till en av mina databaser beroende på vissa villkor/parametrar som kommer från vissa förfrågningar. Jag kan ändra anslutningarna men jag vill stänga Mongoose-anslutningen efter att varje förfrågan har lyckats.

här är min kod

"@nestjs/mongoose": "7.0.0",
"mongoose": "5.10.1"
/*************************
* mognoose.service.ts
*************************/
import { Inject, Injectable, Scope } from '@nestjs/common';
import { MongooseOptionsFactory, MongooseModuleOptions } from '@nestjs/mongoose';
import { REQUEST } from '@nestjs/core';
import { Request } from '@nestjs/common';

@Injectable({ scope: Scope.REQUEST })
export class MongooseConfigService implements MongooseOptionsFactory {
    constructor(
        @Inject(REQUEST) private readonly request: Request,) {
    }

    createMongooseOptions(): MongooseModuleOptions {
        return {
            uri: request.params.uri, // Change this to whatever you want; you have full access to the request object.
        };
    }
}

/*************************
* mongoose.module.ts
*************************/
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { MongooseConfigService } from 'mognoose.service';

@Module({
    imports: [
        MongooseModule.forRootAsync({
            useClass: MongooseConfigService,
        }),
    ]
})
export class DbModule {}

Tack.