我使用Nodejs作爲應用程序API的後端,但是我意識到當有2個不同的用戶繼續請求同一個方法時,從MySQL請求返回的數據可能會混合這裏是我的代碼:來自API的2個併發請求數據混合起來
router.get('/v1/getList', function(req, res) {
model.getList(loginUser, function(groups){
if(!groups.length){
res.json({data: '', success: false, message: 'No record found.'});
} else{
console.log("User:"+loginUser+", Length:"+groups.length);
res.json({data: groups, success: true, message: ''});
}
});
});
loginUser
是用戶ID。在正常情況下,終端輸出會像下面,其中用戶1有2項和用戶2有3項:
User:1, Length:2
User:2, Length:3
User:1, Length:2
User:2, Length:3
and so on...
但是,一旦我不斷刷新屏幕和終端可能返回:
User:1, Length:2
User:2, Length:3
User:1, Length:3
User:2, Length:2
我懷疑用戶2的數據請求正在被用戶1訪問,反之亦然,請問我該如何解決這個問題?
'loginUser'從哪裏來。如果它是一個模塊級別或全局級別的變量,那麼這對於一個node.js應用程序來說是不允許的。您可能需要從特定於當前請求的登錄會話對象中獲取'loginUser'(以便在同時發生多個請求時不會感到困惑)。 – jfriend00
你在哪裏存儲'loginUser'?用戶有什麼不同?還是被覆蓋? – Oxi
@ jfriend00 @Oxi是'loginUser'是一個全局變量,它的值是使用中間件設置的,只要API請求包含'v1',它就會解碼訪問令牌並將相應的用戶ID存儲到'loginUser'這個變量中,是我應該在'loginUser'前加一個'var'? – Ping