我使用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