我试图从validateKey
返回一个真/假值,但是在解决这个承诺时遇到了问题。我试过return new Promise
,但有点卡住了。
server.js
app.get("/node/api/mssql/test", function(req, res) {
console.log(session.validateKey(req)) // logs: Promise { <pending> }, would like to log: true or false
})
session.js
exports.validateKey = function(req) {
return sql.connect(config.properties)
.then(pool => {
return pool.request()
.query("SELECT CASE WHEN EXISTS (SELECT * FROM Login WHERE (username = '" + req.header("username") + "' AND apiKey = '" + req.header("apiKey") + "')) THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END")
.then(response => {
console.log(response[0]['']) // returns true / false
return response[0][''] // return nested value to get true / false response
})
})
}
如何从validateKey
返回包含response[0]['']
结果的承诺?
答案 0 :(得分:1)
您的函数validateKey已经返回一个promise。问题是你如何使用它。
session.validateKey(req).then((validation) => {
console.log(validation) //true or false
//if you want to return this value
return res.send({result: validation});
});
答案 1 :(得分:0)
只需使用异步中间件:
app.get("/node/api/mssql/test", async function(req, res) {
const isValid = await session.validateKey(req));
console.log(isValid);
res.end(isValid ? "Logged in!" : "Failed");
})