【问题标题】:Returning SQL query from a Hapi.js route handler function (javascript callback help)从 Hapi.js 路由处理函数返回 SQL 查询(javascript 回调帮助)
【发布时间】:2018-07-31 06:20:24
【问题描述】:

所以我创建了一个 Hapi.js 宁静的应用程序。后端连接到 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 查询中获取行,但由于我的回调结构,我无法弄清楚如何在响应中返回该信息。任何帮助将不胜感激。

【问题讨论】:

    标签: node.js sqlite callback hapijs


    【解决方案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,但我很有信心。您能否确认它正在工作并让我安心?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      • 2011-03-25
      • 1970-01-01
      • 2019-08-18
      • 2010-11-30
      • 2019-03-31
      • 1970-01-01
      相关资源
      最近更新 更多