在Node / Express应用程序中存储状态

时间:2018-03-15 01:33:44

标签: node.js express middleware

我正在编写一个Node / Express应用程序(我的第一个),需要帮助在页面加载中保持感觉像全局变量的内容;但使用全局变量感觉不对。

出于问题的目的,该网站基本上是对同一数据的3个不同的表视图。表中的数据取自3个单独的MongoDB表,与函数合并在一起,并显示(使用Pug,迭代我刚刚创建的对象)。

3个不同的视图只是迭代同一个对象的不同Pug模板。

我有中间件从MongoDB生成这个对象并将其存储在res.locals上,但是每次用户选择不同的视图时我都不想默认重新生成它。数据没有变化,这感觉很浪费。

我希望能够设置某种变量dataNeedsToBeUpdated,如果true,那么我的中间件中的函数将实际完成工作并重新生成表格;如果false,它就会跳过操作。

如果用户执行了我的某个更新操作,我将设置dataNeedsToBeUpdated = true,重定向,中间件将触发,数据将在下一页加载之前刷新。

我该如何正确地做到这一点?

1 个答案:

答案 0 :(得分:0)

app.locals的工作方式与res.locals类似,只是它适用于整个应用。您可以在req.app.locals的中间件中访问它。你所描述的流程听起来不错;只需使用app.locals存储数据和dataNeedsToBeUpdated