节点 Mysql 带有增量变量的查询

Node Mysql query with incremental variable

我有问题,为什么我在查询中的变量不递增? 我的代码:

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 函数时它不适用,那里出了什么问题?或者当我用 payload(pass) 调用快速回复时如何实现它会显示数据库的下一列?

在 processMessage 之外定义您的用户变量。每次调用该方法时,它都会重新初始化为默认值 0。因此,如果您想保留该值

var user = {
        user_name: '',
        question_index: 0,
    }


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();



    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++;
            })
        })
    }
}
}

没有直接关系,但可能对其他人有帮助,因为缺少关于如何在 select 之后递增的信息。

const select_query = pool.execute('SELECT * FROM `some_table` 
    WHERE `some_id` = ?', [some_variable], function(err, row) {
            
                if (err) {
                    console.log(err)
                    return;
            
                } else {
            
                    if (row && row.length) {
            
                        current_count = row[0].column_to_update
                        new_count = current_count + 1
            
                        const update_query = pool.execute(
                            "UPDATE some_table SET column_to_update = ?", [new_count])
            
                    }
                }
            });