次の関数では、sqlite3でstatment.allクエリを実行しようとしました。 しかし、関数はコールバック関数を実行することなく終了します。sqlite statment.allクエリの後でコールバックを実行できませんでした
徹底的なデバッグと少数の実験の後でも問題を特定できません。 これに関して最も奇妙なことは、コード内で完璧に動作する別の同様のクエリがあることです。それは質問にも含まれています。
ここに問題のあるコードだ:
function gameSetup (questions_num){
var questions = [];
getQuestions.all(questions_num, function (e, rows) {
console.log("the callback is working!"); // this line never runs
if (e) {
return new Promise((resolve, reject) => {
reject(e);
});
}
else{
var answers, question;
for (let row of rows)
{
answers = [row.correct_ans, row.ans2, row.ans3, row.ans4];
answers = shuffle(answers);
question = {"question":row.question, "ans1":answers[0] , "ans2":answers[1] , "ans3":answers[2] , "ans4":answers[3]};
questions.push(question);
console.log(questions);
}
}
return new Promise((resolve, reject) => {
resolve(questions);
});
});}
これは、SQL文です:var getQuestions = db.prepare("select * from t_questions order by random() limit ?");
と私は作品別なコードがあります。
app.get("/rooms", checkAuth, (req, res) => {
getRooms.all((e, data) => {
if(e) {
return res.status(500).json(e);
}
else if (data.length == 0) {
res.render('rooms', {items: data, error: "no rooms found"});
}
else
{
res.render('rooms', {items: data, error: "false"});
}
});
});
を次のステートメントで:
をvar getRooms = db.prepare("select * from t_games where start_time is null");
私はあまりにも多くの情報を与えているかもしれません。質問はこのサイトの最初の質問ですので、フィードバックをいただければ幸いです。
'questions_num'パラメータを呼び出しから削除するとどうなりますか? –
それは助けには見えませんが、提案のおかげで –