App.post 不向数据库发送数据

分享于2023年02月15日 database express javascript mysql node.js 问答
【问题标题】:App.post doesn't send data to the databaseApp.post 不向数据库发送数据
【发布时间】:2023-02-07 23:20:59
【问题描述】:

我正在学习教程,现在正尝试使用 app.post 将数据发送到我的 MySQL 数据库。当我转到运行请求的本地主机站点时(我的本地主机是 localhost:8800/shoes ),它不会更新/插入数据,它只显示我在 MySQL 中的当前数据库。但是在保存JS文件的视频中,数据立即上传。

import express from "express"
import mysql from "mysql"

const app = express()
const db = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "qwerty",
    database: "marketplace"
})

app.get("/", (req, res) => {
    res.json("this is the backend")
})

app.get("/shoes", (req, res) => {
    const q = "SELECT * FROM `marketplace`.`shoes`"
    db.query(q, (err, data) => {
        if(err) return res.json(err)

        return res.json(data)
    })
})
 
app.post("/shoes", (req, res) => {
    const q = "INSERT INTO `marketplace`.`shoes` (`id`, `prod_name`, `prod_description`, `image`) VALUES(?)";
    const values = [
        "222",
        "item3",
        "item 3 description",
        "item3 image"
    ];

    db.query(q, [values], (err, data) => {
        if(err) return res.json(err)
        return res.json(data)
    })
})

app.listen(8800, () => {
    console.log("connected to backend")
})

我试图通过删除 app.get 来解决它,我在本地主机中收到的是 Cannot GET /shoes

import express from "express"
import mysql from "mysql"

const app = express()
const db = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "qwerty",
    database: "marketplace"
})

app.get("/", (req, res) => {
    res.json("this is the backend")
})

// app.get("/shoes", (req, res) => {
//     const q = "SELECT * FROM `marketplace`.`shoes`"
//     db.query(q, (err, data) => {
//         if(err) return res.json(err)

//         return res.json(data)
//     })
// })
 
app.post("/shoes", (req, res) => {
    const q = "INSERT INTO `marketplace`.`shoes` (`id`, `prod_name`, `prod_description`, `image`) VALUES(?)";
    const values = [
        "222",
        "item3",
        "item 3 description",
        "item3 image"
    ];

    db.query(q, [values], (err, data) => {
        if(err) return res.json(err)
        return res.json(data)
        //return res.json("test")
    })
})

app.listen(8800, () => {
    console.log("connected to backend")
})

所以我怀疑问题出在 app.post 但我在视频中有完全相同的代码。我什至尝试了异步,但它仍然不起作用

app.post("/shoes", async (req, res)

请帮忙怎么办

  • 你的 sql 查询 Values 每个参数都应该有一个 ? ,所以, VALUES(?,?,?,?)

【解决方案1】:

从你的这部分描述

我试图通过删除 app.get 来解决它,但我在本地主机中收到的是 Cannot GET /shoes。

听起来好像当您尝试将数据添加到鞋表并因此调用 app.post() 方法时,您实际上仍在调用 get 方法。

查看试图保存数据的前端代码,并确保选项中有类似 method: post 的内容。或者,如果您使用像 Postman 这样的工具来测试 API,请确保为 postman 配置了 post 方法。

【讨论】: