1

我正在学习 Nestjs - TypeORM,下面是提供者的代码

export const RoleProvider = [{
    provide: 'ROLE_PROVIDER',
    useFactory: (connection: Connection) => connection.getRepository(RoleEntity),
    inject: ['DATABASE_CONNECTION']
}
]

现在,我正在尝试通过实现装饰器将此提供程序开发为动态的

export const PrepareProviderName = (target: Object) => {
    console.log('prepare provideer name', target, target['databaseProvider']);
    var original = target['entity'];
    console.log('>',typeof target['entity']);
    return [
        {
            provide: target['name'],
            useFactory: async (conn: Connection) => await conn.getRepository(original.prototype),
            inject: target['dataseProvider']
        }
    ]
}

上面是装饰器

下面是实体 - 模块代码

@Entity({ name: 'roles' })
export class RoleEntity extends SowBaseEntity {


    @Column({ type: 'varchar' })
    Name: string;
}


@Module({
    controllers: [UserController],
    providers:
        [...databaseProvider,
        ...PrepareProviderName(
            {
                name: "ROLE_PROVIDER",
                databaseProvider: ['DATABASE_CONNECTION'],
                entity: RoleEntity
            }
        ),
            RoleProfile,
            UserService,
            AppLogger]
})
export class RoleModule { }
@Entity({ name: 'roles' })
export class RoleEntity extends SowBaseEntity {


    @Column({ type: 'varchar' })
    Name: string;
}

现在我面临错误/阻止程序,我无法将实体按原样传递到存储库。任何人都可以帮助修复它

4

0 回答 0