我是Node.js的新手,我无法诊断这个问题是如何出现的。我正在更新数据库中的数据。它在客户端级别被HTTP 405
阻止。
我在网上看了很多关于这个的主题,没有任何帮助。SQL code
工作正常,但当我试图将数据提交到服务器时,它被阻止了。我有点失落,因为它没有记录到服务器的控制台的细节。
另外,我在res.redirect
上得到一个错误,说不能在发送到客户端后设置头。我不确定这是否会影响这段代码,但我认为不会,因为我已经注解了它,代码仍然可以工作。
ups.js
const express = require('express');
const router = express.Router();
const { StatusCodes, ReasonPhrases } = require("http-status-codes");
module.exports = () => {
router.post("./routes/ups", async (req, res) => {
if(
req.body == null ||
req.body.id == null ||
req.body.av == null
) {
return res.status(StatusCodes.BAD_REQUEST).json({
status: StatusCodes.BAD_REQUEST,
title: ReasonPhrases.BAD_REQUEST,
data: {
error: "Invalid data provided",
}
});
}
var id = req.body.id;
var av = req.body.av;
//Perform Query Ops
var sql = "UPDATE `pc_status` SET available = " + av + " WHERE `id` = " + id + "";
db.query(sql, function(err, result) {
if (err) throw err;
console.log('record inserted');
console.log(req.body.id);
console.log(req.body.av);
//res.redirect(201 ,'/');
});
});
return router;
};
index.js
app.use(require('./routes/ups.js')());
客户端script.js
function testUpload(payload) {
return fetch("http://localhost:3000/ups", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
mode: "cors",
body: JSON.stringify(payload),
});
}
//Sample payload
var payload = {
id: 24,
available: 3,
};
testUpload(payload)
.then((response) => {
return response.json();
})
.then((data) => {
if(data.status == 201) {
console.log("Good!");
} else {
console.log("Error occured");
console.log(data);
}
})
.catch((error) => {
console.log(error);
});
1条答案
按热度按时间31moq8wy1#
当您向
ups
发送请求时,您的post
路由在./routes/ups
上定义。修复路由器的定义,您应该可以: