我有問題,爲什麼我的查詢變量不增量? 我的代碼:節點使用增量變量的Mysql查詢
function processMessage(event) {
if (!event.message.is_echo) {
let message = event.message;
let senderId = event.sender.id;
console.log("Received message from senderId: " + senderId);
console.log("Message is: " + message);
console.log();
var user = {
user_name: '',
question_index: 0,
}
if (message.quick_reply.payload === 'Pass') {
connection.query("SELECT text FROM quiz_questions WHERE quiz_id = ?", [question_index], function(error, results, fields) {
if (error) throw error;
let jsonQuestionResult = getRealResults(results);
connection.query("SELECT text FROM question_option WHERE quiz_question_id = ?", [question_index], function(error, results, fields) {
if (error) throw error;
let jsonAnswerResult = getRealResults(results);
console.log(jsonAnswerResult[0]);
sendQuestionAnswer(senderId, jsonQuestionResult[0].text, jsonAnswerResult[0].text, jsonAnswerResult[1].text, jsonAnswerResult[2].text);
user.question_index++;
})
})
}
}
}
我增加user.question_index但是當我打電話而processMessage功能有什麼不對勁的地方它不適用?或者如何做到這一點,當我打電話與有效載荷(通過)快速回復它會顯示數據庫的下一列?
數據庫查詢在node.js中不同步。你的'user.question_index'可能會增加,而不是當你認爲它。 –
所以,我應該增加user.question_index獲得下一個問題的過程看起來像那個開始 - > yest(payload = pass) - > 1question-> 1answer(payload = pass) - > 2question-> 2answer(payload = pass)作爲測驗繼續調用這個func;) –
其實我沒有仔細閱讀你的代碼。答案是正確的。儘管如此,您仍然會遇到同步問題:如果在第一次完成之前有兩個連續呼叫進來,您將讀取錯誤的值。強烈建議你重新考慮你的設計。 –