我已经在这个项目工作了一个星期,我找不到使用Promise.js,Q.js,Async.waterfall的任何解决方案,但我无法得到我想要的输出。
此代码以node.js编写 我正在尝试检查CHARACTER是否在案例中(switch-case)如果为true,程序将使用异步函数检查Mysql数据库中的名称和其他信息。
如果数据库中存在的数据,程序将指定true,否则为false。
现在,真正的问题是,如果输入正确的值,函数将返回false。
这是我的示例代码
function checkPosCan(watcherid, message, cpnumber, json){
var correct = false;
var len = json.data.length;
for (var i = 0; i < len; i++) {
var fn = (json.data[i].cfname).toLowerCase();
var ln = (json.data[i].clname).toLowerCase();
switch((json.data[i].cpos).toLowerCase()){
case "g":
getCandiName(fn, ln, "governor", function(dataa){
console.log("count ", dataa.count, " id ", dataa.id);
if(dataa.count != 1){
correct = false;
insertLogMessage(watcherid, message, cpnumber, json);
console.log("false sa g part");
} else {
correct = true;
console.log("true sa g part");
}
});
break;
case "vg":
getCandiName(fn, ln, "vice_governor", function(dataa){
//console.log("data " , dataa.count, dataa.id);
if(dataa.count != 1){
correct = false;
insertLogMessage(watcherid, message, cpnumber, json);
} else {
correct = true;
}
});
break;
case "m":
getCandiName(fn, ln, "mayor", function(dataa){
//console.log("data " , dataa.count, dataa.id);
if(dataa.count != 1){
correct = false;
insertLogMessage(watcherid, message, cpnumber, json);
} else {
correct = true;
}
});
break;
case "vm":
getCandiName(fn, ln, "vice_mayor", function(dataa){
//console.log("data " , dataa.count, dataa.id);
if(dataa.count != 1){
correct = false;
insertLogMessage(watcherid, message, cpnumber, json);
} else {
correct = true;
}
});
break;
case "bm":
getCandiName(fn, ln, "board_member", function(dataa){
//console.log("data " , dataa.count, dataa.id);
if(dataa.count != 1){
correct = false;
insertLogMessage(watcherid, message, cpnumber, json);
} else {
correct = true;
}
});
break;
case "cg":
case "cm":
case "cw":
getCandiName(fn, ln, "congressman/woman", function(dataa){
//console.log("data " , dataa.count, dataa.id);
if(dataa.count != 1){
correct = false;
insertLogMessage(watcherid, message, cpnumber, json);
} else {
correct = true;
}
});
break;
case "c":
getCandiName(fn, ln, "councilor", function(dataa){
//console.log("data " , dataa.count, dataa.id);
if(dataa.count != 1){
correct = false;
insertLogMessage(watcherid, message, cpnumber, json);
} else {
correct = true;
}
});
break;
default:
pool.getConnection(function(err, con){
/** invalid format **/
con.query("insert into data_log (pw_party_id, message, created_date_stamp, status, status_date, remarks) VALUES (?,?,?,?,?,?)", [watcherid, message, dateFormat(now, "yyyy-mm-dd HH:MM:ss"), "rejected", dateFormat(now, "yyyy-mm-dd HH:MM:ss"), "err_code_03: This number " + cpnumber + " sends an invalid message format (positions). Message is REJECTED."] , function(err){
console.log(err);
});
correct = false;
});
}
}
console.log("log from inside the function ", correct);
return correct;
}
并致电
console.log(checkPosCan(watcherid, message, cpnumber, json));
有人可以帮助我或者给我一些示例代码吗?我已经失去了2个晚上没有睡觉。
更新
我已经得到了答案:
@Felix Kling的学分