所以我创建了一个Hapi.js restful应用程序。后端连接到SQlite3数据库。当用户向任意端点(在本例中为“/ employees”)抛出GET请求时,我无法将当前回调情况下从SQL查询获取的信息返回给用户。
这是我目前的代码:
server.route({
method: 'GET',
path: '/employees',
handler: function(request, h) {
var employees = [];
db.all('SELECT * from Employee;',[], function (err, rows) {
if (err) {
console.log(err);
}
if (rows) {
rows.forEach(elt => {
employees.push(elt);
});
}
}, () => {
return employees.toString();
});
}
// hapi requires me to return a value or promise here
});
现在上面的代码失败了,因为我没有在处理函数的末尾返回任何内容。我从我的SQL查询中获取行,但由于我的回调结构而无法确定如何在响应中返回该信息。任何帮助将不胜感激。
答案 0 :(得分:-1)
在我看来,你没有以正确的方式使用db.all()
......
根据文档here,似乎db.all
采取回调而不是像你那样做两个......
非常确定您的代码失败,因为您返回的是从未使用过的回调...
你应该尝试类似的东西:
server.route({
method: 'GET',
path: '/employees',
handler: function(request, h) {
db.all('SELECT * from Employee;',[], function (err, rows) {
if (err) {
console.log(err);
return err;
}
return rows;
});
}
});
这是一个疯狂的猜测,我从未使用过Sqlite3或Hapi17,但我非常自信。你能否确认它正在发挥作用并让我保持平静?