node.js - 如何将 Node-js 数据库查询绑定到 Web 表单
问题描述
我正在使用 node 和 postgres,我是编写异步函数的新手,我正在尝试做的是一个非常简单的查询,它将对数据库中的记录进行总数,添加一个并返回结果。结果将在 DOM 生成之前可见。我不知道该怎么做,因为异步函数不会向调用者返回值(也可能我仍然有同步的心态)。这是功能:
function generateRTA(callback){
var current_year = new Date().getFullYear();
const qry = `SELECT COUNT(date_part('year', updated_on))
FROM recruitment_process
WHERE date_part('year', updated_on) = $1;`
const value = [current_year]
pool.query(qry, value, (err, res) => {
if (err) {
console.log(err.stack)
} else {
var count = parseInt(res.rows[0].count) + 1
var rta_no = String(current_year) + '-' + count
callback(null, rta_no)
}
})
}
对于前端,我使用带有简单 HTML 表单的哈巴狗。
const rta_no = generateRTA(function (err, res){
if(err){
console.log(err)
}
else{
console.log(res)
}
})
app.get('/new_application', function(req, res){
res.render('new_application', {rta_number: rta_no})
});
我可以在 console.log 中看到 rta_no,但是当值准备好后如何将它传递回 DOM?
解决方案
这似乎没问题,我只是不确定这一点:
结果将在 DOM 生成之前可见
这个约束违背了异步的目的,因为你的 DOM 应该等待返回的值在那里。而不是等待它,你可以只呈现页面,一旦函数返回并运行你的回调更新值。
此外,也许值得研究一下承诺
推荐阅读
- windows - 有哪些库可以在 Windows 上获得硬件加速的视频解码/编码?
- java - 数字主机模拟器中 Android 自动投影的本机视图
- python - 有没有办法将本地字典发送到 spark 集群?
- amazon-web-services - AWS-Lambda:无法添加另一个事件,无用的 GenerateChangeSet 失败消息
- java - com.sun.jdic 和 Flexdoc 库是否仍在 java 中使用?我们可以与 AAD 集成吗?
- visual-studio-2019 - 无法处理文件
.resx - python - 我可以在 python 中将表/数据框保存到文件(如 png/jpg)吗?
- react-native - 我可以将一个 NextJs api 用于 Web 和移动应用程序吗?
- delphi - 如何使用 delphi SOAP 服务器获取带有 [array of] 的正确 wsdl
- javascript - 将容器限制为三个固定大小