节点 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])
}
}
});
我有问题,为什么我在查询中的变量不递增? 我的代码:
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])
}
}
});