javascript - 来自 pg 的 client.query() 之外的变量未更新
问题描述
我目前正在使用 Hapi 作为后端和 PostgreSQL 作为数据库编写一个简单的笔记(嗯,'assignment')网络应用程序。我目前的问题是获取所有笔记的路线,我无法将数据从数据库传递到前端。
这是我的代码:
method: 'GET',
path: '/report',
// TODO Process data from DB into preformat text & table view
handler: (request, h) => {
const currentWeek = new Date().getWeek()
getReport = `
SELECT * FROM main_assignment WHERE week = ${currentWeek-1}
`
let tableArray= new Array
let finalTable = ''
//FIXME: show finalTable on view
client.connect()
client.query(getReport, (err, res) => {
res.rows.forEach(element => {
const temp = `
<tr>
<td>${element.id}</td>
<td>${element.name}</td>
<td>${element.assignment}</td>
</tr>`
tableArray.push(temp)
});
finalTable = tableArray.join('')
console.log(finalTable)
return h.view('report', {
finalTable
})
})
return h.view('report', {
finalTable
})
当我刷新页面时,表格没有被填充。原来 finalTable 的输出是空白的。我试图在 client.query() 函数中记录它,它实际上以我想要的方式出现(填充了来自 forEach 迭代的数据)。现在这是我知道的事情
- 我还没有完全掌握异步概念。这可能是我搞砸的地方,我很惭愧地承认我已经重新阅读了整个概念,但仍然不清楚它的工作原理和用法
- 是的,传递的数据很糟糕(新字符串,将所有响应转换为数组,将所有数组连接到前一个字符串)。我....不知道更好的写法,所以请随意更改
有没有办法修复代码,以便我可以将 finalTable 值传递给前端?
提前致谢!
解决方案
推荐阅读
- ios - UIsearchbar在请求网站时没有响应
- macos - 运行应用程序(Maven)时出错(Intellj Idea)
- kotlin - 如何按本地字符串字母敏感排序?
- c++ - 获取 std::function 以推断按引用传递/按值传递
- python - 从嵌套字典中的特定获取所有信息
- canvas - 如何使用带有 paper.js 的 SVG 创建画笔?
- fabricjs - FabricJs旋转对象而不移动位置
- php - 我已经从 php 5 升级到 7,但我无法访问我的数据库。为什么代码不起作用
- angular - Dart 中的错误“无法找到某些源的模块...”
- typo3 - 如何使用 Typoscript 从 flexform 获取视频/媒体资源