我有 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。我该如何解决这个问题?
答案 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
}