2个并发请求在Node.js应用程序中混淆

Sil*_*ser 1 nginx mongodb node.js

我完全被我今天在我的应用中注意到的东西难堪.

我有一个用nginx运行的node.js编写的应用程序,后端有mongodb.我有一个'authenticateUser'cal,它接受用户名和密码.然后它查询mongodb以检索用户文档并检查密码是否匹配.

我们写了一个脚本,基本上在循环中调用'authenticateUser'100次.它工作正常.没有错误.现在我们从2个终端运行相同的脚本,一个用于用户账单,另一个用于用户山姆.我们开始看到两个终端都出现故障.我会说大约10%的请求失败,密码错误无效.

当我们检查日志文件时,我们完全惊讶地看到bill的用户名与sam的密码混淆了.我们不知道最近发生了什么?我们必须做一些明显错误的事情.它是什么?2个请求是否完全相互隔离?

任何帮助深表感谢.

非常感谢!SU

ale*_*lex 6

你经常使用全局变量吗?缺失var是导致此类错误的常见原因.

是的,我想看一个源代码......