My UserModel is not resolved in repository via @InjectModel(). I'm initializing the database through a separate provider which is imported to the user's module. I tried to export the mongo provider explicitly from user's module. but the problem still persists.
Please refer to the code below:
MongoDb provider
imports: [
MongooseModule.forRootAsync({
imports: [MongoConfigModule],
useFactory: async (mongoConfigService: MongoConfigService) => ({
uri: mongoConfigService.dbUrl,
useNewUrlParser: true,
isGlobal: true,
}),
connectionName: 'user',
inject: [MongoConfigService],
}),
],
})
export class MongoProviderModule {}
User schema
import { Document } from 'mongoose';
export type UserDocument = User & Document;
@Schema()
export class User {
@Prop()
userId: string;
@Prop()
email: string;
}
export const UserSchema = SchemaFactory.createForClass(User);
User repository
@Injectable()
export class UserRepository {
constructor(@InjectModel(User.name) private userModel: Model<UserDocument>) {}
async findOne(userFilterQuery: FilterQuery<User>): Promise<User> {
return this.userModel.findOne(userFilterQuery);
}
}
user module
@Module({
imports: [
MongoProviderModule,
MongooseModule.forFeature(
[{ name: User.name, schema: UserSchema }],
'user',
),
],
controllers: [UserController],
providers: [UserService, UserRepository],
})
export class UserModule {}
app module
@Module({
imports: [AppConfigModule, UserModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
The error:
Nest can't resolve dependencies of the UserRepository (?). Please make sure that the argument UserModel at index [0] is available in the UserModule context.
Potential solutions:
- If UserModel is a provider, is it part of the current UserModule?
- If UserModel is exported from a separate @Module, is that module imported within UserModule?