【发布时间】:2020-11-11 17:47:17
【问题描述】:
我需要向我的 API 发出 2 个请求,以便在 2 个不同的表中插入数据:
工作流程:
请求获取最后一个 id + 1 => 创建我需要的数组 (last_id, values) => MySql 中的两个 INSERT,第一个使用各种数据,第二个使用我创建的数组。
router.post("/addentry", function (req, res) {
let sql = "SELECT MAX(id) + 1 AS last_id FROM entries;"; // I get the id
let query = connection
.query(sql, (err, results) => {
if (err) throw err;
res.header("Access-Control-Allow-Origin", "*");
// put the id in a variable
var last_id = results[0].last_id;
var categoriesMap = req.body.categories;
var valCat = Object.values(categoriesMap);
// I create the array with other data
var catArray = valCat.map((item) => {
return [last_id, item];
});
})
.then((catArray) => {
let sql = `BEGIN; INSERT INTO entries (title,kindof) VALUES("${[
req.body.title,
]}","${req.body.kindof}");
INSERT INTO categories_main (entry_id, cat_id) VALUES ? ;
COMMIT;`;
let query = connection.query(sql, [catArray], (err, results) => {
if (err) throw err;
console.log(results);
res.header("Access-Control-Allow-Origin", "*");
res.send("Entry added to DB");
});
});
第一部分效果很好,但第二部分我得到了
TypeError: connection.query(...).then is not a function
知道怎么做吗?
谢谢
【问题讨论】:
-
您的第二个错误是由于您仍在连接到数据库,但您正在尝试更改标题。它最初已经设置(在您第一次检查错误之后)。
-
真的。谢谢。我认为每个查询都需要它。我对其进行了编辑以使其更简单。
-
也许这个答案会帮助你解决其他问题:answer
-
我认为我的情况不同,我没有任何连接问题。一旦请求结束,我需要发送第二个请求
-
你使用的是
node-mysql还是node-mysql2