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

时间:2012-05-09 02:43:12

标签: node.js mongodb nginx

我完全被我今天在我的应用中注意到的东西感到难过。

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

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

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

非常感谢任何帮助。

非常感谢! SU

1 个答案:

答案 0 :(得分:6)

您经常使用全局变量吗?缺少var是造成此类错误的常见原因。

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