【问题标题】:How to get a freshly Inserted Id with reactjs (Axios)?如何使用 reactjs(Axios)获取新插入的 ID?
【发布时间】:2021-12-31 16:12:34
【问题描述】:

我正在尝试使用 react Axios 检索 Mysql 中新插入的行的 Id 值。

这是我在 node.js 中的代码

app.post('/createProject', (req,res) => {
  const projectName = req.body.projectName;
  const tjm = req.body.tjm;
  const status = req.body.status;
  db.query("INSERT INTO projects (projectName, tjm, status) VALUES (?,?,?)",
  [projectName, tjm, status],
  (err, result) => {
    if (err) {
      console.log(err);
    } else {
      res.send("Values Inserted");
      res.send(result.insertId);
      console.log(result.insertId);
    }
  }
);
});

我尝试使用 UseState 钩子获取 insertId;在另一个 Post 请求中使用它并将它存储在另一个表中。

react 中的 post 请求:

const [id, setId] = useState();
  const addProject = () => {
    Axios.post("http://localhost:3001/createProject", {
      projectName: projectName,
      tjm: tjm,
      status: "Inachevé"//Uncomplete,
    }).then((res) => {
      console.log("success");
      setId(res.data);
    });
  };

我尝试console.log(id),但在控制台中未定义。

获取项目Inserted Id的post请求:

const addWork = () => {
    Axios.post("http://localhost:3001/createWork", {
        EmpID: id_e,//I get that Id from a drop-down list 
        PrID: id_p,// the Id of the Inserted project who I can't get
    }).then(() => {
      console.log("success");
    });
  };

当我在前端填写我的输入并发送数据(prjectName、tjm 和状态)时,数据被正常存储,insertId 在后端得到控制台但我无法得到它在我的客户端。

创建新项目时如何在前端访问insertId并将其存储在另一个表中?

注意:我认为我应该使用async/awaitaddWork 函数等到addProject 执行,但问题是如何让 insertId 进入前端。

【问题讨论】:

    标签: mysql node.js reactjs express


    【解决方案1】:

    您不应使用res.send() 两次。您可能想要发送 json,其工作方式如下:res.status(200).json({message: "Message",data: lastInsertedID})。 然后,您需要确保正确访问前端中的 id。因此,您可以在控制台上打印整个 json 响应对象,然后通过 json 对象直到您到达 id。

    【讨论】:

    • 我尝试了类似res.status(200).json({message: "Message",data: lastInsertedID}),只使用了一个res.send,就像在前端setId(JSON.parse(res.data)),但仍然得到undefined
    • 只使用res.status(200).json({message: "Message",data: lastInsertedID}) 而不是res.send。然后,将前端的响应输出记录到控制台。在响应对象内部会有你从后端发送的 json。如果您仍然遇到问题,请发送控制台输出。
    • 我只使用res.status(200).json({message: "Message",data: lastInsertedID}),我前端的控制台输出是undefined
    • 执行console.log(res) 并仔细查看响应对象。
    猜你喜欢
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多