Пустой req.query в ExpressJS

Когда я отправляю данные из Angular в NodeJS с помощью http.post, он всегда возвращает мне пустой req.query. Мой server.js:

const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');

const app = express();

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(cors());

app.post('/', (req, res) => {
    console.info(req.query);
    res.send(req.query);
});

app.listen(4000, () => {
    console.info('Successfully');
});

Внешний интерфейс:

onSubmit(f: NgForm) {
    let data = f.value;
    let httpOptions = {
        headers: new HttpHeaders().set('Content-Type', 'application/json')
    };
    data = JSON.stringify(data);
    this.http.post('http://localhost:4000/', data, httpOptions).subscribe(data => {
        console.info(data);
    }, error => {
        console.info(error);
    });
}

И он всегда возвращает {} в консоли. Я пробовал запускать POST-запросы в POSTMAN, и там все корректно сработало. Вот тело http-запроса в браузере: http-запрос в браузере

Надеюсь на вашу помощь, спасибо.

Как насчет того, чтобы вы напрямую добавляли URL-адрес во внешнем интерфейсе в виде строки запроса?

zero298 21.12.2018 03:01
Поведение ключевого слова "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) для оценки ваших знаний,...
1
1
1 739
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Это потому, что req.query содержит параметры Строка запроса, похоже, вы только передаете данные через тело, поэтому вам нужен req.body

экспресс-сообщение получить req.body не определено

user2866442 25.12.2021 16:02

Вы используете req.query, но отправляете данные в теле, а не в качестве параметров запроса.

Вместо этого попробуйте использовать req.body.

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