gpt4 book ai didi

ExpressJS req.body 值为空

转载 作者:行者123 更新时间:2023-12-02 02:55:23 26 4
gpt4 key购买 nike

我正在尝试使用 Mongoose 获取后置路由器以在 MongoDB 数据库中插入评论。当我尝试运行我的 Post 路由器时,输入字段的名称似乎进入了 req.body.newComment,但该值本身是空的。

POST IN 应用的结果:

Result of POST IN app

但是,当我尝试在 Postman 中使用 x-www-form-urlencoded 运行它时,它可以读取值并成功将文档保存到 MongoDB。

postman 的结果:

Result of Postman

目前在 ./app.js 中,我使用以下行来使用 body-parser

var bodyParser = require('body-parser');

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())

在我的路由器文件中,我有一个用于同一个链接的 GET 和 POST 路由器,使用 :parameter 从 MongoDB 中动态获取文档。然后我使用 req.params 构建一个 findOne 查询以从 MongoDB 获取信息。这将进入一个页面,其中包含一个可以为 POST 路由器提交问题的表单。到目前为止,我的 GET 路由器工作正常。

我当前的 POST 路由器:

router.post('/kweeni/:questionTitle', function (req, res, next) {

let c = new Comment()

c.text = req.body.newComment,
c.user_id = 1,
c.question_id = 1

c.save(function (err, doc) {
res.json(doc)
});

});

有人知道如何解决这个问题吗?

提前致谢!

最佳答案

我找到了解决办法!在我的 PUG 文件中临时删除我的前端 JS 脚本后,POST 路由器正确接收到 req.body.questionTitle 的值!

在我的脚本中,我编写了一个事件监听器,它在提交数据后清除表单的输入字段。似乎 POST 路由器在事件监听器重置后接收到该字段,因此该值为空。由于Postman没有使用前端脚本,所以没有遇到这个问题,正常运行。

为了解决这个问题,我在输入字段清空时添加了 1 毫秒的延迟和超时功能!

关于ExpressJS req.body 值为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49695657/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com