@Sashqa

Проброс ошибки вверх node js?

Есть у меня основной файл и в нем
app.use('/', router);
В router у меня
import {NextFunction, Request, Response} from "express";
import {sendHttpRequest} from "../../../projects/server/http-request";
import router from "../../../projects/routes";

router.get('/', ( async (req: Request, res: Response, next: NextFunction) => {
    try {
        let contractId = req.query.contractId;
        const err = await sendHttpRequest(contractId, token);
        res.send(err).end();
    }
    catch (e) {
        next(e)
    }
}));


В sendHttp я вызываю два метода, которые делают запрос к бд
export const sendHttpRequest = async (id: string, token: string) => {
    try {
        await getProductId(id, token);
        return getContractData(id, token);
    }
    catch (e) {
        console.error(e.message)
    }
};


Выглядят запросы примерно так
async function getProductId(id, token) {
    try {
        const variables = {};
        const options = {};
        const req = await fetch(url, options);
        const res = await req.json();
        if (res.data.entityObject.Produkt) {
            idProduct = res.data.entityObject.Produkt.ID
        } else {
            // как прокинуть ошибку вверх?
        }
    }
    catch (e) {
        console.error(e.message)
    }
}


Собственно теперь сам вопрос. Что мне нужно написать , чтобы сообщение об ошибке пробросить вверх в router?
то есть, если я передаю в функцию не рабочий id, d router я хочу получить об этом сообщение.
  • Вопрос задан
  • 42 просмотра
Решения вопроса 1
MvcBox
@MvcBox
Back-end developer
export const sendHttpRequest = async (id: string, token: string) => {
    try {
        await getProductId(id, token);
        return getContractData(id, token);
    }
    catch (e) {
        console.error(e.message);
        throw e;
    }
};


async function getProductId(id, token) {
    try {
        const variables = {};
        const options = {};
        const req = await fetch(url, options);
        const res = await req.json();
        if (res.data.entityObject.Produkt) {
            idProduct = res.data.entityObject.Produkt.ID;
        } else {
            throw new Error('Some error ...');
            // Или же: return Promise.reject(new Error('Some error ...'));
        }
    }
    catch (e) {
        console.error(e.message);
        throw e;
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы