TypeError:无法设置未定义的属性“ id”

时间:2020-07-07 13:53:39

标签: javascript node.js express

尝试学习一些JS Express,并已开始构建一个简单的解决方案,以允许我进行GET / DELETE / POST / PUT等操作。尽管POST路由器有问题。这是路由器:-

        return true;
        //break; <-- remove

然后我有功能

router.post('/', (req, res, next) => {
    const newObject = addToDB(req.body);
    res.status(201).send(newObject);
});

ObjectsArray已经定义并且可以在GET路由器上工作,但是在POST路由器上工作,当我对此进行测试时,出现错误TypeError:无法设置未定义的属性“ id”。该代码似乎与代码学院的代码解决方案几乎相同,因此我不明白如何得到此错误。使用节点运行服务器并进行测试。任何想法。

1 个答案:

答案 0 :(得分:1)

从上面的代码中,看来req.body是未定义的。您应该设置正文分析器,以填充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服务器入口文件的任何名称中。