NodeJS条件决策

时间:2019-12-05 09:21:15

标签: javascript node.js

我正在尝试在NodeJS中做一个简单的if-else。

根据有关语法的信息,它看起来是正确的。

但是,如果块不起作用怎么办。 msg变量值都没有更新。

代码:

sql.connect(config, function(err) {
console.log(err)
var r = new sql.Request();
r.input('gc', sql.VarChar, gcode);
r.input('ingt',sql.VarChar, gtype);
r.input('incf',sql.VarChar,gconfig);
r.input('ingp',sql.VarChar, gprovider);
r.input('inld',sql.DateTime2, launchdate)
r.input('in_activefrom',sql.DateTime2, date_activeFrom)
r.input('in_activeto',sql.DateTime2, date_activeTo)
r.multiple = true;

var rec_count = 0;
r.query("select * from md.GameMasters WHERE gameCode=@gc",function(err, result){
    rec_count = result['recordset'].length;
    console.log('Existing Records: ' + rec_count)
})

if(Number(rec_count) >0){
    console.log('Multiple record exist')
    msg = "Record Exist in Database";
}
else{
    r.query("INSERT INTO md.GameMasters(gameCode,gtype,config,grovider,launchdate,activefrom,activeto,recordEntryOn) VALUES(@gc,@ingt,@incf,@ingp,@inld,@in_activefrom,@in_activeto,getdate())",function(err,result){
        console.log(result['rowsAffected'][0])
        console.log('Record Inserted')
    })
    msg = 'Record Added';
}

});

想知道哪一部分出了问题。

1 个答案:

答案 0 :(得分:1)

由于query()是异步的,因此if...else在变量更新之前正在执行,请在回调函数中添加该变量:

......
r.query("select * from md.GameMasters WHERE gameCode=@gc",function(err, result){
  rec_count = result['recordset'].length;
  console.log('Existing Records: ' + rec_count);

  if(Number(rec_count) >0){
    console.log('Multiple record exist')
    msg = "Record Exist in Database";
  }
  else{
    r.query("INSERT INTO md.GameMasters(gameCode,gtype,config,grovider,launchdate,activefrom,activeto,recordEntryOn) VALUES(@gc,@ingt,@incf,@ingp,@inld,@in_activefrom,@in_activeto,getdate())",function(err,result){
        console.log(result['rowsAffected'][0])
        console.log('Record Inserted');
        msg = 'Record Added';
    });
  }
});
.....