从Hapi.js路由处理函数返回SQL查询(javascript回调帮助)

时间:2018-02-20 19:32:18

标签: node.js sqlite callback hapijs

所以我创建了一个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查询中获取行,但由于我的回调结构而无法确定如何在响应中返回该信息。任何帮助将不胜感激。

1 个答案:

答案 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,但我非常自信。你能否确认它正在发挥作用并让我保持平静?