函数的布尔值返回未定义的 node.js

时间:2021-04-07 17:34:35

标签: javascript sql node.js

我有 2 个函数……auth.js 中的第一个函数是这样的:

 const adminCheck = (req, res) => {
    console.log(“one”)
    UtilRole.roleCheck(req, res, ‘ADMIN’, (response) =>  {
        if(response) {
             return true
         } else {
            return false
         }
     })
    }
    module.exports = {
    adminCheck
    }

基本上检查用户是否是我表中的管理员。这有效,但我试图在我的 index.js 函数中检索我的函数中的布尔值,该函数如下所示。

router.get(‘/viewRegistration’, auth.ensureAuthenticated, function(req, res, next) {

    console.log("authcheck: " + auth.adminCheck())

      const user = JSON.parse(req.session.passport.user)
      var query =  “SELECT * FROM tkwdottawa WHERE email = ‘” + user.emailAddress + “’”;

        ibmdb.open(DBCredentials.getDBCredentials(), function (err, conn) {
          if (err) return res.send(‘sorry, were unable to establish a connection to the database. Please try again later.’);
          conn.query(query, function (err, rows) {
            if (err) {
            Response.writeHead(404);
          }

           res.render(‘viewRegistration’,{page_title:“viewRegistration”,data:rows, user});

          return conn.close(function () {
            console.log(‘closed /viewRegistration’);

          });
          });
        });
    })

我在 console.log 中记录值的地方,就在我初始化函数的地方,它返回 undefined。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您需要使用 Promise 并包装所有回调以从使用回调的函数实际返回给定的结果值,因为通常回调是​​异步调用的,并且仅从它返回一个值并不能帮助在调用函数中捕获它.

pd.DataFrame(np.array_split(l,(4,-1))).fillna(0)

   0  1  2  3
0  1  2  3  4
1  5  6  7  8
2  9  0  0  0

然后您需要等待使用 const adminCheck = (req, res) => { console.log(“one”) return new Promise(resolve, reject) => { UtilRole.roleCheck(req, res, ‘ADMIN’, (response) => { if(response) { resolve(true) } else { resolve(false) } }) } }); 关键字调用此函数并将调用函数标记为异步的结果:

await

答案 1 :(得分:-1)

这很简单。你只是忘了返回内部函数的返回值

 const adminCheck = (req, res) => {
    console.log(“one”)
    return UtilRole.roleCheck(req, res, ‘ADMIN’, (response) =>  {
        if(response) {
             return true
         } else {
            return false
         }
     })
    }
    module.exports = {
        adminCheck
    }