Gin*_*ano 5 mongoose mongodb nestjs
我不确定我是否了解 nestjs/mongoose 配置。
我没有得到任何结果,并假设它正在查询我的管理数据库。
app.module.ts:
import { ConfigService } from './config/config.service';
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { ConfigModule } from './config/config.module';
import { CaseAssetsModule } from './case-assets/case-assets.module';
@Module({
imports: [
ConfigModule,
CaseAssetsModule,
MongooseModule.forRootAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
uri: configService.getString('mongodb.uri'),
useNewUrlParser: true,
useUnifiedTopology: true,
}),
inject: [ConfigService],
})
],
controllers: [],
providers: [],
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
我的配置设置:
mongodb.uri = mongodb://<<myuser>>:<<mypwd>>#@<<myserver>>:27017/admin
Run Code Online (Sandbox Code Playgroud)
案例资产.module.ts:
import { AssetSchema } from './asset.schema';
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { CaseAssetsController } from './case-assets.controller';
import { CaseAssetsService } from './case-assets.service';
@Module({
imports: [MongooseModule.forFeature([{ name: 'Asset', schema: AssetSchema, collection: 'assets' }])],
controllers: [CaseAssetsController],
providers: [CaseAssetsService]
})
export class CaseAssetsModule {}
Run Code Online (Sandbox Code Playgroud)
在哪里指定要连接的数据库?我指定 admin 是因为这是我进行身份验证的数据库。
吉娜
Jay*_*iel 10
您已经通过为该MongooseModule.forRootAsync()方法提供的配置确定了要连接到的数据库。从那里,MongooseModule.forFeature()使用的任何东西都使用相同的配置(即相同的数据库)
好的,现在我明白了问题所在。看起来像 mongo 你可以提供这样的authSource查询参数mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?authSource=authDB。只要您需要对数据库中的每个模型进行身份验证,这种 URI 就可以处理它。您可以将其传递给MongooseModule.forRoot({})orMongooseModule.forRootAsync({})配置。
但是,如果您需要在每个模型的基础上进行此操作,我认为当前MongooseModule无法处理。
有两个连接的解决方案:
app.module.ts
MongooseModule.forRootAsync({
imports: [ConfigModule],
connectionName: 'firstDB',
useFactory: async (config: ConfigService) => ({
uri: config.get('app.firstDB'),
useNewUrlParser: true,
useUnifiedTopology: true,
}),
inject: [ConfigService],
}),
MongooseModule.forRootAsync({
imports: [ConfigModule],
connectionName: 'secondDB',
useFactory: async (config: ConfigService) => ({
uri: config.get('app.secondDB'),
useNewUrlParser: true,
useUnifiedTopology: true,
}),
inject: [ConfigService],
}),
Run Code Online (Sandbox Code Playgroud)
猫.module.ts
@Module({
imports: [
MongooseModule.forFeature(
[
{
name: 'Cat',
schema: CatSchema,
collection: 'cats',
},
],
'firstDB',
),
],
})
export class CatsModule {}
Run Code Online (Sandbox Code Playgroud)
狗模块.ts
@Module({
imports: [
MongooseModule.forFeature(
[
{
name: 'Dog',
schema: DogSchema,
collection: 'dogs',
},
],
'secondDB',
),
],
})
export class DogsModule {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4580 次 |
| 最近记录: |