尝试学习一些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”。该代码似乎与代码学院的代码解决方案几乎相同,因此我不明白如何得到此错误。使用节点运行服务器并进行测试。任何想法。
答案 0 :(得分:1)
从上面的代码中,看来req.body
是未定义的。您应该设置正文分析器,以填充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服务器入口文件的任何名称中。