首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >多个查询- Route.get()需要回调函数,但得到了一个[未定义的对象]

多个查询- Route.get()需要回调函数,但得到了一个[未定义的对象]
EN

Stack Overflow用户
提问于 2016-12-21 16:17:54
回答 1查看 110关注 0票数 0

我试图用多个sql语句制作简单的仪表板。我在这里浏览了很多主题,但仍然无法将sql响应传递给网页。(Multiple sql queries in nodejs类似,但如果使用更多语句,我希望避免使用非常长的代码)

当尝试不使用select语句作为参数时,如果select语句是作为参数而不是在函数中定义的,则会比接收语句更有效

错误: Route.get()需要回调函数,但得到了一个未定义的对象

这样做好吗?你能支持一下吗,怎么了?

这实际上是一种状态:

代码语言:javascript
代码运行次数:0
运行
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-21 17:00:50

您正在错误地构造您的路由定义。当您传递中间件功能时,您将执行它们,getDataX()。您需要传递对中间件函数getDataX的引用。然后,Express将传递给包含reqresnext参数的回调函数。

代码语言:javascript
代码运行次数:0
运行
复制
router.get('/', getDataX, getDataY, function (req, res, next) {
    res.render('dbtestasync', {dataPackage1: req.package, dataPackage2: req.package});
}); 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41267334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档