mysql 承诺中的更新查询未运行

blmhpbnm  于 2023-01-08  发布在  Mysql
关注(0)|答案(1)|浏览(116)

请帮助,更新查询没有在我的承诺中运行。它只是跳到最后一条语句“done with six”。数据库表中要更新的行没有得到更新。我如何才能使更新查询成功运行?

1. crud语句(select+insert语句),我将它们放在了update语句之上

第一个月

2.似乎未运行的update语句

var insertcctblintblbotagents = await new Promise((resolve, reject) => {
var sql='UPDATE db.tblagentstoadd SET db.tblagentstoadd.ccAgentID =? WHERE 
db.agentstoadd.AgentID=? ;';
DB.query(sql,[ctx.session.AgentID, ctx.session.tempAgentID],function(err,result){
    if (err){
      return reject(err);
    };
    return resolve(result);
})
})

3. promise语句(允许crud语句同步运行,因为这些语句相互依赖)

await insertbotagentstoadd
 .then(() => {
 console.log("done with one");
  })
 .then(() => selectbotagentstoadd)
 .then((results) => {
 AgenttoaddIDStore = [];
results.forEach((agent) => {
  AgenttoaddIDStore.push({
    AgentID: agent.AgentID,
   });
   ctx.session.tempAgentID = agent.AgentID;
   });
  return AgenttoaddIDStore;
 })
 .then((res) => {
console.log("agent ID: "+ctx.session.tempAgentID);
console.log("done with two");
return res;
 })
.then((results) => insertcctblricaagents)
.then((res) => {
 console.log("done with three");
return res;
 })
 .then((results) => selectcctblricaagents)
 .then((res) => {
 console.log("done with four");
 return res;
 })
.then((res)=>selectcctblricaagentsnum)
.then((result)=>{
AgentNewIDStore=[];
result.forEach((agent)=>{
    AgentNewIDStore.push({
    AgentID:agent.AgentID,
    MainNumber:agent.MainNumber,
});
ctx.session.AgentID=agent.AgentID;
ctx.session.agentnumber=agent.MainNumber;
});
return AgentNewIDStore;
  })
   .then((res)=>{
    console.log("cctblricaagentsnum agent ID: "+ ctx.session.AgentID);
    console.log("done with five");
    return res;
     })
    .then((result)=>insertcctblintblbotagents) //Doesn't run this area of code
    .then((res)=>{
    console.log("done with six");
    return res;
    });

4.结果显示在终端或控制台中

done with one
agent ID: 151
done with two
done with three
done with four
cctblricaagentsnum agent ID: 96661
done with five
done with six
v09wglhw

v09wglhw1#

它确实运行了查询,但是它在你想要它运行之前就运行了......你在定义promise的时候执行查询,而不是在你“使用”它的时候。代码看起来很奇怪,所以我不会重做所有的代码,但是我建议你使用waits而不是then()链,它会使事情更可读。如果你内联你定义的promise,事情就会工作:

.then((result)=>insertcctblintblbotagents) //Doesn't run this area of code

.then((result)=>{
    return new Promise((resolve, reject) => {
    var sql='UPDATE db.tblagentstoadd SET db.tblagentstoadd.ccAgentID =? WHERE 
    db.agentstoadd.AgentID=? ;';
    DB.query(sql,[ctx.session.AgentID, ctx.session.tempAgentID],function(err,result){
        if (err){
          return reject(err);
        };
        return resolve(result);
    })
})

相关问题