У меня есть функция setClaims, которая просто устанавливает заявки для текущей транзакции. Мне нужно создать вспомогательную функцию, которая будет проверять, был ли указан uuid, устанавливать заявки и возвращать объект транзакции. Примерно так:
export const useAuthTransaction = async (
kx: Knex,
setClaims: (tx: Knex.Transaction, uuid?: string) => Promise<any>,
uuid?: string,
): Promise<Knex.Transaction> => {
if (!uuid) {
throw { errorCodes: [RemoveQuestionErrorCode.Unauthorized] };
}
return kx.transaction(async tx => {
await setClaims(tx);
return tx;
});
};
Но когда я пытаюсь использовать его в своем преобразователе:
useAuthTransaction(kx, setClaims, claims?.uid).then(async tx =>
dataSources.questionAPI.update(tx, input));
, он говорит:
Запрос транзакции уже завершен
Как разрешить контекст транзакции, не закрывая его?