首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >与mysql连接的hapi.js没有在浏览器上显示该值

与mysql连接的hapi.js没有在浏览器上显示该值
EN

Stack Overflow用户
提问于 2019-05-14 17:26:36
回答 1查看 168关注 0票数 0

我正在尝试使用hapi.js从mysql中获取一些数据列表。但是我得到了这个错误

Error:  method did not return a value, a promise, or throw an error

但我可以在我的控制台上看到这些数据。

RowDataPacket { id: 1,编码:'test',描述:'bla',格式:'12‘},RowDataPacket { id: 2,编码:'test2',描述:'test',格式:'15’}

这是我的处理程序代码:

exports.getInfo = async (request, h) => {
    try {
            pool.query(`SELECT * FROM test`, (err, result) => {
            if (err) throw err;
            console.log(result);
            return h.response(result);    
        });

    } catch (e) {
        if (e.response) {
            switch (e.response.status) {
                case 404: return Boom.notFound();
                default: return Boom.failedDependency();
            }
        } else {
            return Boom.failedDependency();
        }
    }
};

这是承诺的问题,我猜mysql不会返回任何承诺。我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-15 03:42:06

您已经在使用异步操作符,这意味着您可以在代码中使用异步/等待方法。

我假设您的pool.query方法返回一个promise,因此您的代码可能如下所示。

exports.getInfo = async (request, h) => {
    try {
        const result = await pool.query(`SELECT * FROM test`);
        return result;
    } catch (e) {
        if (e.response) {
            switch (e.response.status) {
                case 404:
                    return Boom.notFound();
                default:
                    return Boom.failedDependency();
            }
        } else {
            return Boom.failedDependency();
        }
    }
};

如果不是,那么您可以将pool.query方法转换为Promise。

const QueryResult = (query) => {
    return new Promise((resolve, reject) => {
        pool.query(`SELECT * FROM test`, (err, result) => {
            if (err) return reject(err);           
            return resolve(result)
        });
    })
}

exports.getInfo = async (request, h) => {
    try {
        const result = await QueryResult(`SELECT * FROM test`);
        return result;   
    } catch (e) {
        if (e.response) {
            switch (e.response.status) {
                case 404:
                    return Boom.notFound();
                default:
                    return Boom.failedDependency();
            }
        } else {
            return Boom.failedDependency();
        }
    }
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56127056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档