【问题标题】:Nest JS combine plugins and configurations for DBNest JS 结合了 DB 的插件和配置
【发布时间】:2021-11-25 21:05:10
【问题描述】:

如何结合以下 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 Config Module 配置数据库 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 { }

【问题讨论】:

    标签: mongoose nestjs


    【解决方案1】:

    类似下面的应该工作。 useFactory 应该返回 forRoot 接受的相同对象(或解析为相同对象的承诺),因此您应该能够在两者之间复制/粘贴任何选项。

    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 { }
    

    【讨论】:

    • 不知道我是怎么错过那个道具的。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2018-06-03
    • 2018-11-21
    • 2015-12-07
    • 2016-06-06
    • 2019-06-08
    • 1970-01-01
    相关资源
    最近更新 更多