Nest JS 结合了 DB 的插件和配置

Nest JS combine plugins and configurations for DB

我如何结合以下 2 个食谱?或者什么是理想的脚本?

1. Mongoose 插件对所有模式使用连接工厂 https://docs.nestjs.com/techniques/mongodb#plugins

import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';

@Module({
  imports: [
    MongooseModule.forRoot('mongodb://localhost/test', {
      connectionFactory: (connection) => {
        connection.plugin(require('mongoose-autopopulate'));
        return connection;
      }
    }),
  ],
})
export class AppModule {}

2。使用 NestJS 配置模块配置数据库 https://docs.nestjs.com/techniques/configuration

import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { ConfigModule, ConfigService } from '@nestjs/config';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      cache: true,
    }),
    MongooseModule.forRootAsync({
      inject: [ConfigService],
      imports: [ConfigModule],
      useFactory: (config: ConfigService) => ({ uri: config.get<string>('database') })
    })
  ]
})
export class AppModule { }

像下面这样的东西应该工作。 useFactory 预期 return 与 forRoot 接受的相同对象(或解析为同一对象的承诺),因此您应该能够 copy/paste 之间的任何选项二.

import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { ConfigModule, ConfigService } from '@nestjs/config';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      cache: true,
    }),
    MongooseModule.forRootAsync({
      inject: [ConfigService],
      imports: [ConfigModule],
      useFactory: (config: ConfigService) => ({ 
        uri: config.get<string>('database'),
        connectionFactory: (connection) => {
          connection.plugin(require('mongoose-autopopulate'));
          return connection;
        }
      })
    })
  ]
})
export class AppModule { }