Я хотел бы использовать CLS (локальное хранилище с продолжением) в своем приложении TypeScript, чтобы у меня было где-нибудь, где я могу поместить метаданные (например, идентификатор пользователя, идентификатор запроса) для различных целей (например, ведение журнала), не передавая данные вкаждый вызов метода.
Я попытался использовать cls-hooked и async-local-storage .Тем не менее, я не смог заставить работать ни одного из моих модульных тестов Jest.
const als = require('async-local-storage');
als.enable();
// ... some code
describe('Authorization tests', () => {
test('Cannot call without correct scope', () => {
als.set('id', "123123123123");
expect(() => service.registerApp(ctxt, app)).toThrowError(AuthorizationError.NOT_AUTHORIZED);
});
});
Приведенная выше настройка базы данных id
не дает сбоя.
export function authorize(requiredPermissions: string[]) {
return (target: any, name: any, descriptor: any) => {
const protectedFunction = descriptor.value;
const als = require('async-local-storage');
console.log(`>>>>>>>>>My ID ${als.get('id')}`);
// ... some code
}
}
Однаковышеприведенный код просто выводит:
>>>>>>>>>My ID null
Возможно ли то, что я пытаюсь сделать?Заранее спасибо.