Node.js中Express框架POST接口(adduser)无法正常使用求助
解决Express POST接口控制台输出[object object]的问题
我用Node.js的Express框架开发,运行名为adduser的POST接口时,控制台输出了[object object]。以下是我的代码:
路由文件代码
const express = require('express'); const apiController = require('../controllers/api.controller'); const router = express.Router(); router.post('/new', apiController.addUser);
控制器文件(api.controller.js)代码
const addUser = async (req, res) => { const { firstName, lastName, age } = req.body; console.log('post data is '+ req.body); console.log('first name is '+ lastName); console.log('age is '+ age); if (!firstName || !firstName.trim() || !lastName || !lastName.trim() || age == null || age < 0) return res.status(400).send({ statusCode: 400, statusMessage: 'Bad Request', message: null, data: null }); try { const user = new User(firstName, lastName, age); await user.save(); res.status(201).send({ statusCode: 201, statusMessage: 'Created', message: 'Successfully created a user.', data: null, }); } catch (err) { res.status(500).send({ statusCode: 500, statusMessage: 'Internal Server Error', message: null, data: null, }); } };
问题原因
- 控制台输出
[object object]是因为用字符串拼接对象:'post data is '+ req.body会将对象转为默认字符串表示[object Object]。 - 代码存在变量名错误:
console.log('first name is '+ lastName)中,应该打印firstName而非lastName。 - 如果未配置JSON解析中间件,
req.body会是undefined,导致后续解构和打印都出问题。
解决方法
- 正确打印对象:
- 直接传递对象参数给
console.log,Node.js会自动格式化输出:console.log('post data is', req.body); - 或者用
JSON.stringify将对象转为可读格式化字符串:console.log('post data is '+ JSON.stringify(req.body, null, 2));
- 直接传递对象参数给
- 修正变量名错误:
console.log('first name is '+ firstName); - 配置JSON解析中间件:
在Express主入口文件(如app.js)中添加,确保能解析POST请求的JSON体:app.use(express.json());
内容的提问来源于stack exchange,提问作者Priya
相关产品推荐
相关产品推荐

