callback失败后,运行sqlite statment.all查询

在下面的函数中,我试图在sqlite3中运行一个statment.all查询。 然而,该函数没有运行callback函数结束。

即使经过彻底的debugging和less量的实验后,我仍然无法确定问题。 最奇怪的是,我有另一个类似的查询在代码中工作得很好。 这也包括在问题中。

这里是有问题的代码:

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

我可能会提供太多的信息,或者太less。 对这个问题的反馈将不胜感激,因为这是我在网站上的第一个问题。

我认为在声明中调用random()可能是问题所在。

如果你尝试类似的话会发生什么?

 var getQuestions = db.prepare("select * from t_questions order by ? limit ?") 

 getQuestions.all([random(), questions_num], function (e, rows) { ... 

另外, random()是一个你定义的函数返回列的顺序? 或者也许Math.random()