Параметры не передаются на маршрутизатор сервера

У меня есть эта функция, где я передаю некоторые параметры на свой сервер:

async function createOrderItemForCardInList(cardID, value, listID) {
    const token = await getToken();
    const response = await fetch(`${basePath}/order/list/${listID}`, {
        method: 'POST',
        body: JSON.stringify({
            cardID,
            value
        }),
        headers: getTokenAuthHeaders(token)
    });

    return response.json();
}

И на моем сервере у меня есть маршрут, определенный для передачи вызова:

router.post('/list/:id', TokenController.isAValidToken, async (req, res) => {
    const { cardID, value } = req.query;
    console.info(value, cardID); // <- This prints 'undefined'

    try {
        const orderItem = await OrderItemController.createOrderItem(value, req.params.id, cardID);
        res.json(orderItem);
    } catch (error) {
        ErrorController.errorCallback(error, res);
    }
});

Как видно из комментария к моему роутеру, параметры запроса que не передаются, как мне решить эту проблему?

Я точно знаю, что параметры выводят соответствующие значения, когда я помещаю console.info(cardID, value, listID) в функцию createOrderItemForCardInList.

POST отправляет данные в теле запроса

Bravo 22.03.2022 00:37

... он же req.body. Кроме того, предоставляет ли getTokenAuthHeaders() заголовок типа контента? Если нет, то вы пропали content-type: application/json

Phil 22.03.2022 00:38
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы уничтожаете запрос, который добавляется после ? в запросе. IE .com?cardID=777&value=10000

Однако в исходном коде вы отправляете его через тело POST. Измените req.query на req.body для достижения желаемого результата.

router.post('/list/:id', TokenController.isAValidToken, async (req, res) => {
    const { cardID, value } = req.body;
    console.info(value, cardID); // <- This prints 'undefined'

    try {
        const orderItem = await OrderItemController.createOrderItem(value, req.params.id, cardID);
        res.json(orderItem);
    } catch (error) {
        ErrorController.errorCallback(error, res);
    }
});

Вы правы, я использовал не то свойство, спасибо!

Daniel Corona 22.03.2022 05:00

Другие вопросы по теме