Express.js:app.locals vs req.locals vs req.session

我试图了解什么时候最好使用下面的每一个。 这是我的基本理解:

app.locals – 适用于在应用程序级别存储全局variables。 所有用户/会话将看到这些variables的相同值。 variables可用于所有视图。

res.locals – 适用于存储特定请求/响应周期的variables。 variables只对与响应相关的视图可用。

req.session – 适用于存储与唯一用户会话相关的variables(例如,用户名)。 这些variables应该可用于唯一用户/会话的所有视图。

我具体的用例如下:用户运行查询从MongoDB中检索数据。 我现在想要这个查询的结果,这是一个JSON数组,可用作所有视图(http请求)的variables。 什么是最好的方式来“存储”的结果数组,以便每个视图可以访问它?

谢谢

我现在想要这个查询的结果,这是一个JSON数组,可用作所有视图的variables。 什么是最好的方式来“存储”的结果数组,以便每个视图可以访问它?

当你说“可用于所有的意见”我假设你的意思是所有的HTTP请求。 如果是这种情况,那么你需要知道,HTTP是一个无状态的协议,并没有提供这一点。 你需要为此开发自己的机制。

这样做的一种方法是将这些信息(数组)caching在服务器上,并在每个请求中检索它(例如,从内存而不是从MongoDB中检索)。 您将在Cookie上存储会话ID,并在其他请求通过时根据此ID从caching中获取该ID。 有几种可用的caching工具(例如,redis,memcached等等),您可以select将这些信息存储在内存中。

您也可以将这些信息(数组本身)cookie进行cookie,在这种情况下,它将在每个HTTP请求中在客户端和服务器之间来回发送,除非数据非常小,否则很可能不是一个好主意。