首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >res.locals,req.variable在node.js中返回未定义的

res.locals,req.variable在node.js中返回未定义的
EN

Stack Overflow用户
提问于 2018-11-15 11:52:50
回答 1查看 1K关注 0票数 1

我是node.js新手,我正在编写一个API,但有一个基本问题。我试图访问app.js中的值,该值设置为res.locals或(req对象)在validateSession.js中,给出了未定义的值。

这是否是对中间件的适当使用?

如何在app.js中使用中间件?

app.js

代码语言:javascript
运行
复制
app.post('/api/JSONSrv',validateSession,function(req,res){
console.log(req.dbResult)
})

validateSession.js

代码语言:javascript
运行
复制
    function validateSession(req,res,next){
        if(someCondition){
           oracledb.getConnection(
                {
                  user          : dbConfig.user,
                  password      : dbConfig.password,
                  connectString : dbConfig.connectString
                },
                function (err, connection) {
                  if (err) { console.error(err.message); return; }
                  var plsql=`BEGIN CREATE_OR_VALIDATE_SESSID(:IN_CORP_ID, :PI_IN_USER_ID, :PI_IN_PASSWORD, :PI_IN_JSONLENGTH,:PI_IN_URL, :PO_IN_DOCKET, :STATUS, :OUT_ERROR_DESC, :OUT_DOCKET);
                  END;`;

            var bindvars = {

             };

               connection.execute(plsql,bindvars,function (err, result) {
                      if (err) {
                        doRelease(connection);
                         return;
                     }
                  console.log(result.outBinds);
                  req.dbResult=result.outBinds;//giving undefined in app.js
                 res.local.dbResult=result.outBinds;//giving undefined in app.js
                  doRelease(connection);
                  });
            });
            }else{
            res.json({
                Error_Desc:'Invalid payload length'
            })
        }
         next();
    }
module.exports.validateSession=validateSession;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-15 14:18:31

在调用next()之前,不需要等待查询结果。

将您的代码重构为类似于以下内容:

代码语言:javascript
运行
复制
if (someCondition) {
  ...
  connection.execute(plsql,bindvars,function (err, result) {
    ...
    doRelease(connection);
    next();
  });
} else {
  next();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53318913

复制
相关文章

相似问题

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