React - 删除请求带有错误代码 404

React - delete request come with error code 404

我在尝试从 mySQL 数据库中删除驱动程序时遇到问题。 调用我的函数并传递映射的 id(它正在工作):

<button id="deleteRent" onClick={DeleteVehicles.bind(vehicle.id)}>Delete</button>

这是我的反应代码:

const DeleteVehicles = (CarId) => {
        Axios.delete(`http://localhost:3001/vehicleDelete/${CarId}`)
            .then((response) => {
                if (response) {
                    console.log(response)
                    alert("Sikeres Törlés")
                    navigate("/admin");
                }
                else {
                    console.log("törlési hiba")
                }
            })
    }

这是我的节点表达请求:

app.delete('/vehicleDelete/:CarId'), async (req, res) => {
    db.query("DELETE FROM products WHERE id = ?", req.params.CarId,
        (err, result) => {
            console.log(err)
            console.log(result)
            if (result) {
                res.send(result);
            }
        })
}

有什么想法吗?

你应该运行这个:

app.delete('/vehicleDelete/:CarId'), (req, res) => {
   // make sure your are getting CarId that exists
   // and then you delete it

    db.query(`DELETE FROM products WHERE id = ${req.params.CarId}`,
        (err, result) => {
            console.log(err)
            console.log(result)
            if (result) {
                res.send(result);
            }
        })
}

此外,您不需要添加 async,因为您没有使用 await 进行查询。结果给你一个可能看起来像这样的对象:

{
  fieldCount: 0,
  affectedRows: 1,
  insertId: 0,
  serverStatus: 34,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0
}

现在,当您说您收到 404 状态代码时,这意味着您没有发出请求的路线。因此,http://localhost:3001/vehicleDelete/${CarId}您需要在服务器上正确注册路由。

您应该使用 Promises 添加 catch 块,这是推荐的做法。

const DeleteVehicles = (CarId) => {
        Axios.delete(`http://localhost:3001/vehicleDelete/${CarId}`)
            .then((response) => {
                if (response) {
                    console.log(response)
                    alert("Sikeres Törlés")
                    navigate("/admin");
                }
                else {
                    console.log("törlési hiba")
                }
            }).catch(console.log);
    }

axios 应该小写:

axios.delete(`http://localhost:3001/vehicleDelete/${CarId}`)

注意快递代码上的右括号:

app.delete('/vehicleDelete/:CarId', async (req, res) => {
    db.query("DELETE FROM products WHERE id = ?", req.params.CarId, (err, result) => {
        if (err) return res.status(500).send('Error')
        res.status(200).send(result);
    })
})