我正在尝试使用pg-pool来查询Postgresql数据库.然后将此数据导出到Node.js express rest API.
这是我的出口功能.
exports.getDashboard = function(req, response, next) {
let returnData = fetchData();
return response.status(200).json(returnData);
};
哪个调用fetchData();
fetchData = async function() {
let returnData = [];
returnData.languages = await getLatestLanguages();
return returnData;
};
哪个叫getLatestLanguages()
getLatestLanguages = function() {
pgPool.pool.query(
'SELECT * FROM "WordLanguage" ORDER BY id DESC LIMIT 30 ;',
(error, results) => {
if (error) {
throw error;
}
return results.rows;
}
);
}
如果我在getLatestLanguages()返回results.rows之前放置了console.log(results.rows),那么我将数据记录到控制台.
但是,该对象未返回到fetchData.我通过在返回到exports.getDashboard()之前将returnData记录到控制台来测试它.
我相信我的问题与pg-pool的异步性质有关,所以我尝试使用await使我的函数异步,但这没有帮助.
我究竟做错了什么?
解决方法:
getLatestLanguages()应该返回一个promise.例如
getLatestLanguages = function() {
return new Promise((resolve, reject) => {
pgPool.pool.query(
'SELECT * FROM "WordLanguage" ORDER BY id DESC LIMIT 30 ;',
(error, results) => {
if (error) {
reject(error);
}
resolve(results.rows);
}
);
});
};
fetchData()是异步的,因此应该等待
exports.getDashboard = async function(req, response, next) {
let returnData = await fetchData();
return response.status(200).json({ languages: returnData.languages });
};
还要确保以上述正确的格式返回returnData.languages而不是… json(returnData);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。