我正在编写一个Node / Express应用程序(我的第一个),需要帮助在页面加载中保持感觉像全局变量的内容;但使用全局变量感觉不对。
出于问题的目的,该网站基本上是对同一数据的3个不同的表视图。表中的数据取自3个单独的MongoDB表,与函数合并在一起,并显示(使用Pug,迭代我刚刚创建的对象)。
3个不同的视图只是迭代同一个对象的不同Pug模板。
我有中间件从MongoDB生成这个对象并将其存储在res.locals
上,但是每次用户选择不同的视图时我都不想默认重新生成它。数据没有变化,这感觉很浪费。
我希望能够设置某种变量dataNeedsToBeUpdated
,如果true
,那么我的中间件中的函数将实际完成工作并重新生成表格;如果false
,它就会跳过操作。
如果用户执行了我的某个更新操作,我将设置dataNeedsToBeUpdated = true
,重定向,中间件将触发,数据将在下一页加载之前刷新。
我该如何正确地做到这一点?
答案 0 :(得分:0)
app.locals
的工作方式与res.locals
类似,只是它适用于整个应用。您可以在req.app.locals
的中间件中访问它。你所描述的流程听起来不错;只需使用app.locals
存储数据和dataNeedsToBeUpdated
。