javascript - 如何在节点js中调用同步函数
问题描述
我已经创建了一个用于从数据库 mysql 中获取记录的全局函数,但它的返回未定义
但是一旦我们在这个函数下传递静态数据,它就可以正常工作,
methods.trendingPodData = function (){
var sql = "SELECT * from table1 where 1";
con.query(sql, function (err, result, fields) {
var myJSON = JSON.stringify(result);
var hashtagsArray = JSON.parse(myJSON);
//console.log(hashtagsArray);
return hashtagsArray;
});
}
解决方案
创建承诺并在调用函数时解决它,
methods.trendingPodData = () => {
return new Promise((resolve, reject) => {
var sql = "SELECT * from table1 where 1";
con.query(sql, (err, result, fields) => {
if(err) {
return reject(err)
}
var myJSON = JSON.stringify(result);
var hashtagsArray = JSON.parse(myJSON);
//console.log(hashtagsArray);
resolve(hashtagsArray);
});
}
}
在调用函数时,
router.get('/GetPodHomeScreen', async (req, res) => {
try {
const allTrendingDataArray1 = await globalVar.data.trendingPodData();
res.send(allTrendingDataArray1)
} catch(error) {
res.status(500).send(error)
}
})
推荐阅读
- ios - 如何在 iOS 14 中更改 TabBar 位置
- docker - Nginx+Tomcat+Docker 组成 SSL
- java - 在 Eclipse 中使用 Gradle 在构建路径中使用其他项目
- logging - 如何审查/隐藏 HOCON 值使其不会出现在 Ktor 日志中
- angular - 可观察到的竞争条件 - 代码执行得太快
- python - 使用 BERT 或 LSTM 模型在大型文档中实现语义相似度的最佳方法
- javascript - 我如何读取 html 文件并获取数据?(不在浏览器中)
- css - 对齐输入字段(每行 2 个) - VueJS
- javascript - 如何将此json数据转换为js中的键值对数组?
- javascript - 如何在Angular8的Highcharts工具提示中呈现角度指令