javascript - 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。该代码似乎与代码学院的代码解决方案几乎相同,所以我不明白我是如何得到这个错误的。使用节点运行服务器并进行测试。有任何想法吗。
解决方案
从您上面的代码来看,它似乎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 服务器的入口文件的任何名称。
推荐阅读
- redis - 使用 helm 图表的 bitnami redis 集群 tls 连接的权限被拒绝错误?
- html - 如何将徽章与 CSS 中的列表项对齐
- javascript - React fetch post,页面刷新,变成GET请求
- azure - Azure Function App 是否支持 Python 3.9?
- javascript - 当动态呈现的 Iframe 以反应结束时运行事件的正确方法
- amazon-web-services - 在已删除实例时删除 AWS 卷?
- r - 如何用 4 个级别总结一个因素
- registry - 将值写入存储在 Inno Setup 中的数组中的所有注册表项
- rpgle - 在 RPG 中以 2 位小数显示双精度数?
- mysql - 如何计算mysql中嵌套表架构的百分比