Node.js 带数据的POST上req.body为空,但日志req显示req.body存在 我的问题
我正在尝试使用express.js在node.js中编写一个注册/登录页面。我决定将路由和应用程序初始化分为两个文件。当我使用数据Node.js 带数据的POST上req.body为空,但日志req显示req.body存在 我的问题,node.js,express,post,Node.js,Express,Post,我正在尝试使用express.js在node.js中编写一个注册/登录页面。我决定将路由和应用程序初始化分为两个文件。当我使用数据{“用户名”:“xyz”,“密码”:“xyz”}向localhost:3000/register发送POST请求时,请求对象具有属性body。然而,当我试图访问这个属性时,我得到了未定义的属性 我当前的代码 我的预期结果 我希望能够访问req.body和req.body.username 您的代码中有一个小问题。router.post回调函数的第一个参数是req,第二
{“用户名”:“xyz”,“密码”:“xyz”}
向localhost:3000/register
发送POST请求时,请求对象具有属性body。然而,当我试图访问这个属性时,我得到了未定义的属性
我当前的代码
我的预期结果
我希望能够访问
req.body
和req.body.username
您的代码中有一个小问题。router.post
回调函数的第一个参数是req
,第二个参数是res
。回调函数
参数是固定的非命名参数
您正在尝试获取响应对象
上的主体,尽管参数名为req
,但它仍然保存响应对象
。这是问题的根源
请换一下
错误:
router.post('/', async (res, req) => {
router.post('/', async (req, res) => {
正确:
router.post('/', async (res, req) => {
router.post('/', async (req, res) => {
我看到您正在控制器/寄存器中导入bodyParser,但没有设置它,至少在这个代码段中是这样。如果您没有任何特殊原因将其放入控制器,请改为这样做
// app.js
// Load express and define port
const express = require('express');
const bodyParser = require('body-parser'); // new code
const app = express();
app.use(bodyParser.urlencoded({ extended: true })); // new code
const port = 3000;
// App Configurations
app.use(express.json())
// Load Routes
var registerRouter = require('./controllers/register.js');
// Use Routes
app.use('/register', registerRouter);
// Start App
app.listen(port, () => console.log(`Example app listening on port ${port}!`));