mysql - mysql插入后无法获取insertId
问题描述
设置:react、axios、mysql、node.js
我试图在插入后的 axios 发布请求中从 mysql 访问 results.insertId ,我看到它记录了正确的结果,但是之后当我尝试将它分配给一个状态时,它返回空。我已经看到这可能是一个异步问题,但我不明白这里的问题,因为我可以正确记录数据。我也是 promises 和 async 的新手,但最终目标是在 mysql 中插入一个页面元素,然后使用新页面的 id 作为变量将用户重定向到创建的页面,如果有人有更好的解决方案,我很开放对任何事情。
我的 node.js 声明:
app.post('/api/insertpage', (req, res) => {
const name = req.body.name;
const Link = req.body.Link;
const sqlInsert = "INSERT INTO pages (name, Link) VALUES (?,?);";
db.query(sqlInsert, [name, Link], (err, results) => {
if (err) {
res.send({ err: err });
console.log("the error is:" + err);
}
if (results.insertId) {
res.json({ insertId: results.insertId })
console.log(results);
console.log(results.insertId);
} else {
res.send({ message: "not working"});
res.send("not working");
}
})
});
我的 axios 请求:
Axios.post("backendurl/api/insertpage" , {
name: name,
Link: Link,
})
.then((results) => {
console.log(results.data.insertId);
setPageId(results.data.insertId);
// my state is defined in a functional component as const [pageId, setPageId] = useState();
// I also tried with useState("");
console.log(results.data)
if (results.data.message) {
console.log("failed")
} else {
if (results.data.insertId) {
console.log("id present")
console.log(results.data.insertId);
console.log(pageId);
} else {
console.log("no id")
}
if (pageId !== "") {
console.log("id NOT null IT IS WORKING")
console.log(pageId);
} else {
console.log("id IS null")
}
}
})
这是日志的样子,首先记录 insertId,然后是完整响应:
解决方案
推荐阅读
- reactjs - (重构/改进)循环以进行 API 调用并按照“no-loop-func”操作数组
- websphere - IBM MQ - 我无法创建主题不是从 DEV 开始的。在 docker 版本上
- node.js - React JS:渲染空白页面而不是在路由中渲染组件
- javascript - 使用 Firebase REST API 时如何处理注册用户错误
- arrays - 我想在“pd.Series(a,index=).unique”代码中保留索引
- python-3.x - 如何使用 Jmespath 查询复杂的嵌套字典?
- mysql - 此查询没有进一步优化?
- apache-spark - Pyspark - 如何根据条件将多个 json 流合并到单个数据帧?
- r - 如何在 R 中的 lavaan 中调整 Cronbach 的 Alpha 测量误差
- python - 如何将多个列表压缩到python中的嵌套字典中