我在大学里有 Nestjs 的项目 这是我第一次使用nest 所以我在将用户存储库注入 userService 时遇到问题 我创建基本回购接口 base.interface.repository.ts 是从文档扩展而来的
import { Document, Model } from 'mongoose';
export interface BaseInterfaceRepository<T extends Document> {
create(data: Partial<T>): Promise<T>;
findAll(): Promise<T[]>;
findById(id: string): Promise<T | null>;
update(id: string, data: Partial<T>): Promise<T | null>;
delete(id: string): Promise<T|null>;
}
我有抽象类 基础.抽象.存储库
import { Model, Document, model, Error, Promise } from "mongoose";
import { BaseInterfaceRepository } from "./base.interface.repository";
import { filter } from "rxjs";
export abstract class BaseAbstractRepository<T extends Document> implements BaseInterfaceRepository<any>{
protected model: Model<T>;
constructor(model: Model<T>) {
this.model = model;
}
findAll(): Promise<any[]> {
throw new Error('Method not implemented.');
}
async create(data: Partial<T>): Promise<T> {
return await this.model.create(data);
}
async findById(id: string): Promise<T | null> {
return await this.model.findById(id).exec();
}
async findOne(filter: any): Promise<T | null> {
return await this.model.findOne(filter).exec();
}
async find(filter: any): Promise<T[]> {
return await this.model.find(filter).exec();
}
async update(id: string, data: Partial<T>): Promise<T | null> {
return await this.model.findByIdAndUpdate(id, data, { new: true }).exec();
}
async delete(id: string): Promise<T|null> {
const result = await this.model.findByIdAndDelete(id);
return await result;
}
}
所以我有 user.repository.interface.ts
import { User } from 'src/Schema/User.Schema';
import { BaseInterfaceRepository } from "../../../repositories/Base/base.interface.repository";
export interface UserRepositoryInterface extends BaseInterfaceRepository<User> {
}
我有 User.repository.ts,它是从 BaseAbstractRepository 扩展的,它实现了 UserRepositoryIterface
import { Injectable } from '@nestjs/common';
import { Model } from 'mongoose';
import { InjectModel } from '@nestjs/mongoose';
import { BaseAbstractRepository } from '../../../repositories/Base/base.abstract.repository';
import { User, } from 'src/Schema/User.Schema';
import { UserRepositoryInterface } from "./user.repository.interface";
@Injectable()
export class UserRepository extends BaseAbstractRepository<User> implements UserRepositoryInterface {
constructor(@InjectModel(User.name)
private readonly userModel: Model<User>,private repo:UserRepositoryInterface
) {
super(userModel);
}
}
问题是当我尝试将 UserRepositoryInterface 注入 userService 时 给我这个错误 这是我的 UserService
import { Inject, Injectable, forwardRef } from '@nestjs/common';
import { UserRepositoryInterface } from "./UserRepo/user.repository.interface";
import { UserRepository } from "./UserRepo/user.repository";
import { User } from "../../Schema/User.Schema";
@Injectable()
export class UserService {
constructor(@Inject('UserRepositoryInterface') private readonly repo: UserRepositoryInterface) {}
}
我尝试在 UserModule.ts 中添加 userRepositoryInetafce 的提供者
import { Module } from '@nestjs/common';
import { UserService } from "./user.service";
import { UsersController } from "../../Controllers/user.controller";
import { UserRepository } from "./UserRepo/user.repository";
import {UserRepositoryInterface} from "./UserRepo/user.repository.interface";
@Module({
imports:[],
controllers: [UsersController],
providers: [
UserService,
{
provide: 'UserRepositoryInterface',
useClass: UserRepository,
},
]
})
export class UserModule {}
我在应用程序模型中导入用户模型 像这样
import { Module } from '@nestjs/common';
import { MongooseModule } from "@nestjs/mongoose";
import { MongoDataServiceModule } from './Config/Mongo/mongo-data-service.module';
import { UserService } from './uses-case/User/user.service';
import { UserModule } from './uses-case/User/user.module';
import { UserRepository } from "./uses-case/User";
import { BaseAbstractRepository } from './repositories/Base';
import {BaseInterfaceRepository} from "./repositories/Base";
@Module({
imports: [
MongoDataServiceModule,
UserModule,
,
],
controllers: [],
providers: [
],
})
export class AppModule {}
但没有成功
[Nest] 7576 - 02/14/2024, 10:03:05 PM 错误 [ExceptionHandler] Nest 无法创建 AppModule 实例。 AppModule“imports”数组索引 [2] 处的模块未定义。
潜在原因:
范围[] 错误:Nest 无法创建 AppModule 实例。 AppModule“imports”数组索引 [2] 处的模块未定义。
看起来 AppModule 中的导入中 UserModule 之后有一些东西。尝试删除仅包含逗号的行,并让我们知道它是否有效。