首页 > 解决方案 > TypeError:无法设置未定义的属性“id”

问题描述

尝试学习一些 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: Cannot set property 'id' of undefined。该代码似乎与代码学院的代码解决方案几乎相同,所以我不明白我是如何得到这个错误的。使用节点运行服务器并进行测试。有任何想法吗。

标签: javascriptnode.jsexpress

解决方案


从您上面的代码来看,它似乎req.body是未定义的。您应该设置 body-parser 以填充req.body. 你像这样设置它:

  1. 通过在命令行中运行以下命令来安装 body-parser: npm install body-parser

  2. 然后在您的路线之前添加以下代码行以确保填充请求参数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 服务器的入口文件的任何名称。


推荐阅读