res.locals, req.variable вернул неопределенный в node.js - PullRequest
0 голосов
/ 15 ноября 2018

Я новичок в node.js и пишу API, но у меня есть одна базовая проблема. Я пытаюсь получить доступ к значению в app.js, который установлен в res.locals или (req объект) в validateSession.js, давая неопределенный.

Будет ли это правильным использованием промежуточного программного обеспечения?

Как использовать результат промежуточного программного обеспечения в app.js?

app.js

app.post('/api/JSONSrv',validateSession,function(req,res){
console.log(req.dbResult)
})

validateSession.js

    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;

1 Ответ

0 голосов
/ 15 ноября 2018

Вы не дожидаетесь результатов запроса, прежде чем позвоните next().

Перестройте код так, как показано:

if (someCondition) {
  ...
  connection.execute(plsql,bindvars,function (err, result) {
    ...
    doRelease(connection);
    next();
  });
} else {
  next();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...