Node.js对象实例化是否为每个用户创build一个对象?

所以我正在学习这个教程 ,学习如何在Node.js中创build一个RESTful API,其中一部分突然让我有点担心。 在应用程序中实例化对象以处理称为TaskRepository()的RESTful请求。

根据与教程相关的Gist ,您将看到以下代码片段:

 var taskRepository = new TaskRepository(); 

我的问题是,这将实例化每个用户一个TaskRepository()对象? 在这种情况下,如果交通stream量足够高,是不是有机会跑出内存?

这里最好的做法是什么?

此外,如果是这样的话,你将如何绕过它以避免未来的交通拥堵?

在特定的API中,有一个API来创build一个任务,并返回一个任务ID。 该任务将存在,直到将来的某个API调用引用该特定的ID并使用删除操作。

TaskRepository是每个服务器(为您的服务器创build一次),而不是每个用户。

这些任务不是特别的用户,但是当你创build一个任务并把它返回给请求者时,只有这个请求者可能知道这个ID并使用它,尽pipe由于这个例子没有创build随机ID,它们是可以预测的所以任何人都可以引用特定的ID。

如果创build完成后不删除任务,则会随着时间的推移累积。 通常情况下,像这样的东西会产生某种不活动的超时时间,如果在一段时间内(如30分钟)没有使用,会自动删除任务。

在你连接的Gist的情况下,答案是否定的。 new TaskRepository()在安装服务器时调用一次(就在创buildvar app = express旁边,然后一个实例将被共享并用于所有请求。

现在,如果你已经在路由中调用了new TaskRepository()app.get('stuff/etc', function () {})) ),那么你会是正确的。 它会根据HTTP请求创build一个TaskRepository的新实例。