【问题标题】:How to fix NestJS @InjectModel() dependency error?如何修复 NestJS @InjectModel() 依赖错误?
【发布时间】:2021-08-22 09:06:39
【问题描述】:

rememberLink.scheme.ts

import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Types } from 'mongoose';
import { User } from 'src/users/schemas/users.schema';

export type RememberLinkDocument = RememberLink & Document;

@Schema({versionKey: false, timestamps: true})
export class RememberLink {
    @Prop({ type: String, required: true })
    code: string;

    @Prop({ type: Types.ObjectId, ref: User.name, required: true })
    user: User;
}

export const RememberLinkSchema = SchemaFactory.createForClass(RememberLink);

记住密码.module.ts

import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { RememberPasswordController } from './remember-password.controller';
import { RememberPasswordService } from './remember-password.service';
import { RememberLink, RememberLinkSchema } from './schemas/rememberLink.schema';

@Module({
    imports: [
        MongooseModule.forFeature([{
            name: RememberLink.name,
            schema: RememberLinkSchema
        }])
    ],
    controllers: [RememberPasswordController],
    providers: [RememberPasswordService],
    exports: [RememberPasswordService]
})
export class RememberPasswordModule {}

remember-password.service.ts

import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { UserDto } from 'src/users/dto/user.dto';
import { User } from 'src/users/schemas/users.schema';
import { RememberLinkDto } from './dto/rememberLink.dto';
import { RememberLink, RememberLinkDocument } from './schemas/rememberLink.schema';

@Injectable()
export class RememberPasswordService {

    constructor( @InjectModel(RememberLink.name) private readonly rememberLinkModel: Model<RememberLinkDocument> ) {}

    async getUserByRememberCode(code: string): Promise<UserDto> {
        return await this.rememberLinkModel.findOne({code}).populate(User.name).lean();
    }
}

错误:

Nest 无法解析 RememberPasswordService (?) 的依赖项。 请确保索引 [0] 处的参数 RememberLinkModel 是 在 RememberPasswordService 上下文中可用。

【问题讨论】:

  • import 语句的路径是否正确?

标签: javascript node.js nestjs


【解决方案1】:

已修复。它是在另一个模块中导入“RememberPasswordService”而不是“RememberPasswordModule”

【讨论】:

    【解决方案2】:

    我要做的就是导出 MongooseModule,只是依赖注入知道在应用程序的某个地方会有该模型的单独模块

    @Module({
        imports: [
            MongooseModule.forFeature([{
                name: RememberLink.name,
                schema: RememberLinkSchema
            }])
        ],
        controllers: [RememberPasswordController],
        providers: [RememberPasswordService],
        exports: [MongooseModule,RememberPasswordService] // <-- MongooseModule added here
    })
    export class RememberPasswordModule {}
    

    【讨论】:

      猜你喜欢
      • 2022-01-21
      • 2020-03-12
      • 2020-11-29
      • 1970-01-01
      • 2021-10-12
      • 2021-10-16
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      相关资源
      最近更新 更多