我不确定我是否理解 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 { }
我的配置设置:
mongodb.uri = mongodb://<<myuser>>:<<mypwd>>#@<<myserver>>:27017/admin
案例 Assets .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 {}
我在哪里指定要连接的数据库?我指定 admin 因为那是我验证的数据库。
吉娜
最佳答案
您已经通过 MongooseModule.forRootAsync()
的配置确定了要连接的数据库。方法。从那里,MongooseModule.forFeature()
中使用的任何东西使用相同的配置(即相同的数据库)
用解决方案编辑
好的,现在我明白了这个问题。看起来你可以使用 mongo 提供 authSource
像这样的查询参数mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?authSource=authDB
.只要您需要对数据库中的每个模型进行身份验证,这种 URI 就应该处理它。您可以将其传递给 MongooseModule.forRoot({})
或 MongooseModule.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],
}),
猫.module.ts
@Module({
imports: [
MongooseModule.forFeature(
[
{
name: 'Cat',
schema: CatSchema,
collection: 'cats',
},
],
'firstDB',
),
],
})
export class CatsModule {}
狗.module.ts
@Module({
imports: [
MongooseModule.forFeature(
[
{
name: 'Dog',
schema: DogSchema,
collection: 'dogs',
},
],
'secondDB',
),
],
})
export class DogsModule {}
关于mongodb - 无法配置nestjs/mongoose,初始数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59271043/