[英]website timeout after adding a .inv to req,session
我正在嘗試向我的req.session
添加一個唯一 ID,但是當 function 執行時,如果我想將 go 無限加載到另一個頁面,它會超時。 有沒有辦法正確地做到這一點?
app.use(function (req, res, next) {
if (req.query.inv) {
sql.query(`SELECT * FROM inv WHERE inv='${req.query.inv}';`, (error, result) => {
if(error) console.log(error);
if(result.length < 1) {
req.session.inv= '';
next()
} else {
req.session.inv = `?inv=${req.query.inv}`;
console.log(req.session.inv);
next()
}
});
} else {
if(!req.session.inv) {
req.session.inv= '';
next()
}
}
});
您有一個中間件,完成后必須調用next()
以便可以調用堆棧中的下一個中間件。 請參閱 Express 的使用中間件文檔。
看看你的邏輯 - 如果inv
不在你的查詢字符串中但確實存在於你的 session 中,那么next()
永遠不會被調用。 這與您遇到的問題一致 - 您將inv
添加到 session,然后在您的下一頁加載時,您將永遠卡在中間件中。 你會想要這樣的邏輯:
app.use(function (req, res, next) {
if (req.query.inv) {
/* .... */
} else if (!req.session.inv) {
req.session.inv= '';
}
next(); // this makes sure that next() always gets called
});
您還有一個明顯的SQL 注入風險,因為您正在獲取原始查詢字符串值並將其直接傳遞到您的查詢中。 你想要的是一個參數化查詢- 我鏈接到 node-postgres 文檔,即使我不確定你實際使用的是什么數據庫。 到目前為止,您的查詢不安全。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.