gpt4 book ai didi

mysql - 如何在Nodejs中编写mysql查询的串行执行

转载 作者:行者123 更新时间:2023-11-29 19:20:46 34 4
gpt4 key购买 nike

我是nodejs编程的新手,我正在nodejs和mysql中编写一些rest api调用,我想通过nodejs mysql查询更新我的表,但在这里我面临一些异步回调问题。我想串行执行查询。我尝试过的 promise 也仍然是相同的结果

代码:

    app.post("/storeData",function (req,response)
{
console.log(req);
var note = req.body.note;
var time = req.body.time;
var userid = req.body.userid;
var title = req.body.title;

var data = {

"code" : 0,
"message" : "fail"
};
if(note!=null && time!=null && userid!=null && title!=null)
{

var flag = checkIdExist(userid); // this one is executing async

if(!flag)
{
var query = "insert into todo values('',?,?,?,?)" ;
connection.query(query,[note,userid,title,time],function (err,rows,fields)
{
if(!err)
{
data.code = 200;
data.message = "success";
}
response.json(data);
});
}
});

}
else
{
data.code = 0;
data.message = "parameters are missing";
}
function checkIdExist(id)
{
var query = "select * from todo where userid = ? ";
connection.query(query,[id],function (err,rows,fields) {

if(err)
{
return false
}
else if(rows.length == 0)
{
return false
}
});

return true
}

最佳答案

ES6 已经内置了 promise 。以下演示如何使用 ES6 Promise 同步或串行运行代码。

app.post("/storeData", function(req, response) {
console.log(req);
var note = req.body.note;
var time = req.body.time;
var userid = req.body.userid;
var title = req.body.title;

var data = {

"code": 0,
"message": "fail"
};
if (note != null && time != null && userid != null && title != null) {

var checkIdExist = function() {
return new Promise((resolve, reject) => {
checkIdExist(userid, resolve, reject); // this one is executing async
});
}

checkIdExist()
.then((flag) => {
if (!flag) {
var query = "insert into todo values('',?,?,?,?)";
connection.query(query, [note, userid, title, time], function(err, rows, fields) {
if (!err) {
data.code = 200;
data.message = "success";
}
response.json(data);
});
}
})
.catch((error) => {
console.log(error.message);
});
} else {
data.code = 0;
data.message = "parameters are missing";
}});
function checkIdExist(id, resolve, reject) {
var query = "select * from todo where userid = ? ";
connection.query(query, [id], function(err, rows, fields) {

if (err) {
reject(err.message)
} else if (rows.length == 0) {
resolve(false);
}
});

resolve(true);}

关于mysql - 如何在Nodejs中编写mysql查询的串行执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42465890/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com