我正在尝试使用多个sql语句创建简单的仪表板。我在这里经历了很多主题,但仍然无法将sql响应传递给网页。 (Multiple sql queries in nodejs类似,但如果使用更多语句,我想避免使用很长的代码)
尝试不使用select语句作为参数而不是它的作用但如果select语句作为参数而未在函数中定义而不是接收
错误:Route.get()需要回调函数,但得到了一个[对象 未定义]
这是一个很好的方法吗?你能支持,有什么不对吗?
这是实际状态:
function selectStmt(stmt) {
return function (req, res, cb) {
pg.connect(conString, function (err, client, next) {
if (err) {
console.log(err);
} else {
client.query(stmt, function (err, result) {
if (err) {
console.log(err);
} else {
req.package = JSON.parse(JSON.stringify(result.rows));
console.log(req);
cb(req.package);
next();
}
});
}
});
}
}
var getDataX = selectStmt('select x from tblX');
var getDataY = selectStmt('select y from tblY');
router.get('/', getDataX(), getDataY(), function(req, res, next) {
res.render('dbtestasync', {dataPackage1: req.package, dataPackage2: req.package});
});
module.exports = router;
答案 0 :(得分:1)
您正在错误地构建路径定义。您正在执行中间件功能,因为您正在传递它们,getDataX()
。您需要传入对中间件函数getDataX
的引用。然后,Express将传递给包含req
,res
和next
参数的回调函数。
router.get('/', getDataX, getDataY, function (req, res, next) {
res.render('dbtestasync', {dataPackage1: req.package, dataPackage2: req.package});
});