回调失败后,sqlite statment.all查询
问题描述:
在下面的函数中,我试图在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");
我可能提供的信息太多,或太少。对这个问题的反馈将不胜感激,因为这是我在网站上的第一个问题。
答
我认为在声明中调用random()
可能是问题所在。
,如果你尝试类似,会发生什么:
var getQuestions = db.prepare("select * from t_questions order by ? limit ?")
和
getQuestions.all([random(), questions_num], function (e, rows) { ...
而且,是random()
返回列被责令你的地方定义的函数?或者也许Math.random()
?
+0
随机是SQLite的内置函数 –
如果从通话中删除'questions_num'参数会怎么样? –
它似乎没有帮助,但感谢您的建议 –