我正在尝试学习一些JS Express,并且已经开始构建一个简单的解决方案,允许我使用GET/DELETE/POST/PUT等等,但是在POST路由器上遇到了问题。 这是路由器:-
router.post('/', (req, res, next) => {
const newObject = addToDB(req.body);
res.status(201).send(newObject);
});
然后我就有了功能
const addToDB = (newObject) => {
newObject.id = `1`;
objectsArray.push(newObject);
return newObject;
}
ObjectsArray已经定义,并且在GET路由器上工作,但是在POST路由器上,当我测试它时,我得到错误typeError:不能设置undefined的属性'id'。 该代码似乎与code Academy的代码解决方案几乎完全相同,所以我不明白我怎么会得到这个错误。 使用节点运行服务器并进行测试。 有什么想法吗。
从上面的代码来看,req.body
似乎是未定义的。 您应该设置body-parser,以便填充req.body
。 你这样设置它:
>
通过在命令行中运行以下命令来安装body-parser:npm install body-parser
然后,在路由之前,添加以下代码行,以确保请求参数正在req.body
中填充
var bodyParser = require('body-parser')
var app = express()
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
希望这能帮上忙。
注意,上面的代码片段位于app.js
或您所称的web服务器入口文件的任何名称中。