我花了一整天的时间试图找出这个问题的解决方案,但我没有。所以我向你寻求帮助。
我使用表单数据类型中的 POST 方法向邮递员发送了一个请求,并在 vscode 中控制台了 req.body,控制台显示了从邮递员发送的对象,它包含正确的数据,没有错误。
router.post("/addPost/:id", async (req, res) => {
try {
console.log(req.body);
res.send("success");
} catch (error) {
console.log(error);
}
});
然后我重复相同的参数和相同的步骤,但使用 PUT 方法,并在 vscode 中控制台 req.body,但这里控制台显示 req.body 的空对象。
router.put("/edit/:id", async (req, res) => {
try {
console.log(req.body);
res.send("success");
} catch (error) {
console.log(error);
}});
module.exports = router;
main.js 文件
const express = require("express");
const mongoose = require("mongoose");
const app = express();
app.use(express.json());
const URI = process.env.URI;
mongoose
.connect(URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false,
})
.then(() => console.log("Connected to DB"))
.catch((error) => console.log(error));
app.use("/api/user", require("./routes/user/user"));
app.use("/api/admin", require("./routes/admin/admin"));
app.listen(5000, () => console.log(`server up and running`));
请帮助我。
您正在使用默认情况下不支持的 put 请求,请将其设为 POST 请求并添加
_method => 'PUT'
以及您传递的数据
我认为问题可能是您需要将 x-www-form-urlencoded 设置为邮递员的正文。
我认为这是因为表单数据不能很好地处理 PUT 请求。传统上,表单数据仅适用于 GET 和 POST 请求。 您可以采取变通办法,使其在 PUT 请求中工作。
当需要处理表单数据时,最好使用 POST 请求。