ExpressJS上的空req.query

时间:2018-12-21 01:56:40

标签: javascript node.js angular typescript express

当我使用http.post将数据从Angular发送到NodeJS时,它总是返回空的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.log(req.query);
    res.send(req.query);
});

app.listen(4000, () => {
    console.log('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.log(data);
    }, error => {
        console.log(error);
    });
}

它总是在控制台中返回{}。我试图在POSTMAN中运行POST请求,并且在那里可以正常工作。 这是浏览器中http请求的正文: http-request in browser

希望您的帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

这是因为req.query保留了查询字符串参数,看起来您只是通过正文向上传递数据,所以您需要req.body

答案 1 :(得分:0)

您正在使用req.query,但您是在正文中发送数据,而不是作为查询参数。

尝试改用req.body