我正在尝试在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';
}
});
想知道哪一部分出了问题。
答案 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';
});
}
});
.....