提问者:小点点

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:不能设置undefined的属性'id'。 该代码似乎与code Academy的代码解决方案几乎完全相同,所以我不明白我怎么会得到这个错误。 使用节点运行服务器并进行测试。 有什么想法吗。


共1个答案

匿名用户

从上面的代码来看,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服务器入口文件的任何名称中。