我正在尝试使用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不会返回任何承诺。我该如何解决这个问题?
发布于 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();
}
}
};
https://stackoverflow.com/questions/56127056
复制相似问题