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

Do Node.js object instantiaton create one object per user?

所以我正在 this tutorial 学习如何在 Node.js 中制作 RESTful API,其中一部分突然让我有点担心.在应用程序中实例化一个对象来处理名为 TaskRepository().

的 RESTful 请求

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

var taskRepository = new TaskRepository();

我的问题是,这会为每个用户实例化一个 TaskRepository() 对象吗?在这种情况下,如果流量足够大,您是否有可能 运行 很快就会内存不足?

此处的最佳做法是什么?

此外,如果是这种情况,您将如何以编程方式绕过它以避免将来出现交通堵塞?

在那个特定的 API 中,有一个 API 来创建一个任务,它 return 是一个任务 ID。该任务将存在,直到将来的某个 API 调用引用该特定 ID 并使用删除操作。

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

这些任务并不是针对每个用户的,但是当您创建一个任务并将其 return 发送给请求者时,只有那个请求者可能知道 ID 并使用它,尽管因为这个例子不会创建随机 ID,它们是可预测的,因此任何人都可以引用特定 ID。

如果任务创建后不删除,它们会随着时间的推移而累积。通常,这样的事情会造成某种不活动超时,如果任务在一段时间内(比如 30 分钟)没有被使用,它们会自动删除。

对于您链接的 Gist,答案是否定的。 new TaskRepository() 在服务器设置时被调用一次(就在创建 var app = express 之后,一个实例将被共享并用于所有请求。

现在,如果您在路线 (app.get('stuff/etc', function () {}))) 内调用了 new TaskRepository(),那么您是正确的。它将为每个 HTTP 请求创建一个新的 TaskRepository 实例。