Я пытался обернуть голову вокруг провайдеров и декораторов в loopback 4, и мне трудно понять это.
- Какова основная цель провайдера?
- Это только для последовательности или может использоваться в другом месте?
- Есть ли шаблон для подражания?
- Как лучше всего использовать его с декоратором?
Мои текущие реализации выглядят следующим образом:
export interface MyProviderFn {
(args: any[]): Promise<void>;
}
export class MyActionProvider implements Provider<MyProviderFn> {
public constructor(
@inject(CoreBindings.APPLICATION_INSTANCE)
public app: RestApplication,
@inject.getter(CoreBindings.CONTROLLER_CLASS, { optional: true })
private readonly getController: Getter<Constructor<{}>>,
@inject.getter(CoreBindings.CONTROLLER_METHOD_NAME, { optional: true })
private readonly getMethod: Getter<string>,
) {}
public value(): MyProviderFn {
return args => this.action(args);
}
public async action(args: any[]): Promise<void> {
const controllerClass = await this.getController();
const methodName = await this.getMethod();
if (!controllerClass || !methodName) return;
const metadata = getDecoratorMetadata(controllerClass, methodName);
if (!metadata) {
return;
}
// Provider specific code here
}
}
Это точный способ сделать это?Это может быть чище?