typescript 类型错误:在反映.getMetaData嵌套时

nfg76nw0  于 2022-12-19  发布在  TypeScript
关注(0)|答案(1)|浏览(104)

我有两个Netsjs模块
1名用户
2-管理员
这两个模块的模式是相同的。但是有一点不同,user的默认角色是0,admin的默认角色是1。因为Admin也被称为user,所以我想为他们使用一个mongodb集合(users集合)。或者我想在注册后将他们放在同一个集合中发送。
但是在这个过程中我得到了以下错误
[嵌套] 756 - 2022年12月15日下午3:54:34错误[异常处理程序]类型错误:在Reflect.getMetadata(D:\Noum\Data\CYBRNODE\MAN堆栈\网络节点博客后端\网络博客嵌套后端\节点模块\反射元数据\Reflect.js:354:23)在DependenciesScanner.是可注入的(D:\Noum\Data\CYBRNODE\MAN堆栈\网络节点博客后端\网络博客嵌套后端\节点模块@nestjs\核心\scanner.js:302:26)

我为达成目标所做的事情
用户模块ts

@Module({
  imports: [
    forwardRef(() => {
      AdminModule;
    }),
    MongooseModule.forFeature([
      {
        name: User.name,
        schema: userSchema,
      },
    ]),
  ],
  controllers: [UserController],
  providers: [UserService, AdminService],
  exports: [UserService],
})
export class UserModule {}

管理模块.ts

@Module({
  imports: [
    forwardRef(() => {
      UserModule;
    }),
  ],
  controllers: [AdminController],
  providers: [AdminService, UserService],
  exports: [AdminService],
})
export class AdminModule {}

admin.service.ts由于我想在mongodb中使用User集合,所以在这里我将UserModel注入AdminServcie

@Injectable()
export class AdminService {
  constructor(
    @InjectModel(User.name) private readonly adminModel: Model<userDocument>,
  ) {}

}

我知道该逻辑可能有很多反问题,我将接受所有问题并考虑它们。但首先我要解决此Reflect.getMetadata问题...

jdgnovmf

jdgnovmf1#

您在以下方面有缺陷:

forwardRef(() => {
    AdminModule;
}),
forwardRef(() => {
    UserModule;
}),

只需替换为:

forwardRef(() => {
    return AdminModule;
})
forwardRef(() => {
    return UserModule;
}),

更新的用户模块:

@Module({
    imports: [
        forwardRef(() => {
            return AdminModule;
        }),
        MongooseModule.forFeature([
            {
                name: User.name,
                schema: UserSchema
            },
        ]),
    ],
    controllers: [],
    providers: [UserService, AdminService],
    exports: [
        UserService,
            MongooseModule.forFeature([
            {
                name: User.name,
                schema: UserSchema
            },
        ]),
    ],
})

嵌套MongoDB
如果您还想在另一个模块中使用这些模型,请将MongooseModule添加到CatsModule的exports部分,并在另一个模块中导入CatsModule。

相关问题