我试图请求主体json到Node js使用await获取主体是空的



我是node js中的新成员,所以我试图使用以下代码重新获取json post到node js:

const req = await fetch(
"http://localhost:3000/api/auth/signin", {
method: "POST",
header:{
'Accept':'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
username:myusername,
password:mypassword
})
},

)

但是当我签入服务器端时,正文是空的,我错过了什么吗?

这是我的服务器端代码:
exports.signin = (req, res) => {
db.findByUsername(req.body.username,(err,data) =>{
if(err){
if (err.kind === "not_found") {
res.status(404).send({
message: `Not found customer with username or password.`
});
} else {
res.status(500).send({
message: "Error retrieving Customer with id " + req.body.username
});
}

}
console.log(data)
if(data.password_user != req.body.password){
return res.status(401).send({
accessToken: null,
message: "Invalid Password!"
});
}

});

};

我试图访问req.body.username,但它是空的。

这是我的路线:

const { verifySignUp } = require("../middleware");
const controller = require("../controllers/auth.controller");
const bodyParser = require('express');

module.exports = function(app) {
app.use(function(req, res, next) {

res.header("Access-Control-Allow-Origin", "*");
res.header(
"Access-Control-Allow-Headers",
"x-access-token, Origin, Content-Type, Accept"
);
next();
});
app.use(bodyParser.json());
app.post("/api/auth/signin", controller.signin);
};

这是错误代码:

TypeError: Cannot read property 'password_user' of null

首先,您添加中间件的方式是错误的(老实说,我从未见过)。以下是我想解释的:

module.exports = function(app) {
app.use(function(req, res, next) {
// CORS handler
});
app.use(bodyParser.json());
app.use('/api/auth/signin', controller.signin);
};

还要注意你的导入是错误的:

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

如果我理解正确的话,您想要修补您的app,这是一个express应用程序的实例。在这种情况下,您应该在为POSTPUT请求添加任何处理程序之前添加body-parser中间件。否则,执行顺序是错误的,来自请求的原始体永远不会被解析,因此,req.bodyundefined

编辑

如果你想在一条路由上使用body-parser,你可以尝试以下操作:

app.route('/path/to', bodyParser.json(), function(req,res,next) { });

最新更新