Node.js req.body值未定义
我的req.body始终显示{},即使我在代码中使用了body解析器Node.js req.body值未定义,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我的req.body始终显示{},即使我在代码中使用了body解析器 用户模型 const userSchema = new mongoose.Schema({ email: { type: String, required:true, index:true, }, password: { type: String, required: true } },{timestamps:t
用户模型
const userSchema = new mongoose.Schema({
email: {
type: String,
required:true,
index:true,
},
password: {
type: String,
required: true
}
},{timestamps:true});
module.exports = mongoose.model('User', userSchema);
路线
const express= require('express');
const router = express.Router();
const {currentUser} = require("../controllers/user");
router.post('/current-user', currentUser);
module.exports = router;
const User = require("../models/user");
exports.currentUser = async (req, res) => {
const {email} = req.body
console.log(email)
// console.log(req.query)
await User.findOne({email}).then((user) => {
if (!user) {
// console.log(user);
return res.status(401).json({
error: 'User not found!'
});
}
res.json({
data:"SUCCESS"
})
})
}
控制器
const express= require('express');
const router = express.Router();
const {currentUser} = require("../controllers/user");
router.post('/current-user', currentUser);
module.exports = router;
const User = require("../models/user");
exports.currentUser = async (req, res) => {
const {email} = req.body
console.log(email)
// console.log(req.query)
await User.findOne({email}).then((user) => {
if (!user) {
// console.log(user);
return res.status(401).json({
error: 'User not found!'
});
}
res.json({
data:"SUCCESS"
})
})
}
我收到一个错误:即使电子邮件id存在,也找不到用户。
如果我输入console.log(请求正文)
=>输出:
{}
控制台日志(请求正文电子邮件)
=>输出:
未定义
请帮助我解决此问题。您可能需要使用bodyPrser()中间件。 你可以阅读更多关于它的内容 然后,在server.js或app.js文件中
const bodyParser = require('body-parser');
const app = express();
app.use(router()); //your user defined router middleware
app.use(bodyParser.json()); //this is a bodyparser middleware to read/extract the
//data from req.body
请不要使用身体解析器,因为你已经在使用express了,身体解析器有一个内置的中间件,比如
const app = express()
app.use(express.json({ limit: '50mb' }))
app.use(express.urlencoded({ limit: '50mb', extended: true, parameterLimit: 50000 }))
这将完成主体解析器的工作
另外,您能告诉我们您在请求中发送了什么吗?因为这是一个post请求,并且您可能发送了一个空对象,这就是为什么您在请求体中得到{}
我可以看到您正在从中提取电子邮件,但如果您能提供示例请求,肯定会有所帮助。我已经在使用body parser<代码>app.use(bodyParser.json({limit:“2mb”}))代码>但它显示主体解析器不受欢迎您在请求中发送什么?