不允许使用Node.js方法

6jygbczu  于 2023-05-17  发布在  Node.js
关注(0)|答案(1)|浏览(146)

我是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);
             });
31moq8wy

31moq8wy1#

当您向ups发送请求时,您的post路由在./routes/ups上定义。修复路由器的定义,您应该可以:

router.post("/ups", async (req, res) => {
    // router's code snipped for brevity's sake

相关问题