javascript - Nest 无法解析 UserModel 的依赖项(?)
问题描述
当我尝试使用MongooseModel
时,Users
我收到以下错误
Nest 无法解析 UserModel (?) 的依赖关系。请确保索引 [0] 处的参数 DatabaseConnection 在 MongooseModule 上下文中可用。
/src/database/database.module.ts
import { Module } from '@nestjs/common';
import { databaseProviders } from './database.providers';
import { ConfigModule } from '../config/config.module';
@Module({
imports: [ConfigModule],
providers: [...databaseProviders],
exports: [...databaseProviders],
})
export class DatabaseModule {}
/src/database/database.provider.ts
// NPM Packages
import * as mongoose from 'mongoose';
import { Provider } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
// Custom Packages
import { ConfigService } from '../config/config.service';
export const databaseProviders: Provider[] = [
{
inject: [ConfigService],
provide: 'DATABASE_CONNECTION',
useFactory: async (
configService: ConfigService,
): Promise<typeof mongoose> =>
await mongoose.connect(configService.get('MONGODB_URI'), {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false,
}),
},
];
/src/app.module.ts
// Core Packages
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
// NPM Packages
// Custom Packages
import { ConfigModule } from './config/config.module';
import { DatabaseModule } from './database/database.module';
import { AuthModule } from './auth/auth.module';
import { UsersModule } from './users/users.module';
@Module({
imports: [ConfigModule, DatabaseModule, AuthModule, UsersModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
/src/auth/auth.module.ts
// Core Packages
import { Module } from '@nestjs/common';
// NPM Packages
import { PassportModule } from '@nestjs/passport';
import { JwtModule } from '@nestjs/jwt';
// Custom Packages
import { AuthService } from './auth.service';
import { LocalStrategy } from './local.strategy';
import { JwtStrategy } from './jwt.strategy';
import { UsersModule } from '../users/users.module';
import { jwtConstants } from './constants';
import { AuthController } from './auth.controller';
import { ConfigService } from 'src/config/config.service';
import { ConfigModule } from 'src/config/config.module';
import { DatabaseModule } from 'src/database/database.module';
@Module({
imports: [
ConfigModule,
DatabaseModule,
UsersModule,
PassportModule,
JwtModule.registerAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
secret: configService.get('JWT_SECRET'),
signOptions: { expiresIn: configService.get('JWT_EXPIRE') },
}),
inject: [ConfigService],
}),
],
providers: [AuthService, LocalStrategy, JwtStrategy],
exports: [AuthService],
controllers: [AuthController],
})
export class AuthModule {}
/src/users/user.module.ts
// Core Packages
import { Module } from '@nestjs/common';
// NPM Packages
import { MongooseModule } from '@nestjs/mongoose';
// Custom Packages
import { UsersService } from './users.service';
import { UsersController } from './users.controller';
import { UserSchema } from './schemas/user.schema';
import { DatabaseModule } from 'src/database/database.module';
@Module({
providers: [UsersService],
exports: [UsersService],
controllers: [UsersController],
imports: [
DatabaseModule,
MongooseModule.forFeature([{ name: 'User', schema: UserSchema }]),
],
})
export class UsersModule {}
解决方案
而不是在你的静态配置猫鼬database.provider.ts
,你应该使用MongooseModule.forRootAsync
导入:
MongooseModule.forRootAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
uri: configService.getString('MONGODB_URI'),
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false,
}),
inject: [ConfigService],
});
推荐阅读
- database - Google 表格可以用作“多用户”数据库吗?
- python - Pyhon中的条件子集
- python - 'numpy.float64' 对象没有属性 'apply'
- python - 在 Optimal 之后获得下一个最佳解决方案
- dummy-variable - ML:虚拟变量陷阱或为什么我们有 n-1 个虚拟变量的原因?
- javascript - 为什么 ChartJS 不能在 Windows 10 机器上运行?(在 MacOS 上运行良好)
- sql-server - CTE 产生意外结果
- c - 为什么要使用变量的地址来改变变量的值?
- java - 使用 google tink 库解密密钥时出现标签不匹配错误
- python - 如何初始化 K 表示在具有 569 行(样本)和 30 列(特征)的数据矩阵上聚类?