node.js - 嵌套查询,nodejs 上的 promise
问题描述
我正在尝试构建一个 rest api,获取一个嵌套的 mysql 查询。
当我获取第一个查询时,这会返回一个数组,然后使用这个数组,我需要通过 array.map 为每个值的另一个查询获取数据
当脚本运行时,总是记录一个空数组,我认为一定是承诺的原因。请问有什么帮助吗?
//this the mysql queries
const getTournaments = 'SELECT ID FROM wp_posts WHERE post_type = "tournament"'
const getTournamentGame = 'SELECT meta_value FROM wp_postmeta WHERE meta_key = "tournament_game" AND post_id = ?'
async function fetchType(id){
return new Promise ((res, rej) => {
try{
pool.query(getTournamentGame, [id], (err, rows) => {
if (err) {
return rej(err)
}else {
return res(rows[0].meta_value)
}
})
} catch(err){
console.log(err)
}
})
}
async function mapeado(array) {
return new Promise (async (resolve,rej) => {
try{
var arr = []
array.map((item) => {
fetchType(item.ID).then((res) => {
var tourData = {
id: item.ID,
type: res
}
return tourData
}).then((data) => {
arr.push(data)
})
})
return resolve(arr)
} catch(err) {
console.log(err)
}
})
}
//making rest api
app.get('/tournaments', async (req, res) => {
pool.query(getTournaments, (err, rows) => {
mapeado(rows).then(console.log)
})
})
解决方案
推荐阅读
- javascript - TamperMonkey:获取作为 DOM 对象的子项的 URL 部分列表
- python - 仅从列表项 REGEX 中提取字符
- excel - 如何根据其他列中的其他条件构建 Excel 函数以查找列中的重复项?
- java - 尝试在 Spring 中保存具有连接列的实体时,在休眠中获取非空约束违规
- sparql - 如何正确使用 sh:rule 和 sh:count
- python - 如何在pygame中插入url链接
- c - 在 C 中使用递归 DFS 返回节点本身
- python - Python模块内部/外部导入
- ruby-on-rails - Rails ActiveRecord 从列中获取值,如果为 nil,则从关联的默认值获取
- r - 通过云平台访问 R