【问题标题】:Storing state in a Node/Express application在 Node/Express 应用程序中存储状态
【发布时间】:2018-03-15 01:33:43
【问题描述】:

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

就问题而言,该网站本质上是同一数据上的 3 个不同的表视图。表中的数据取自 3 个独立的 MongoDB 表,通过函数合并在一起,并显示(使用 Pug,遍历我刚刚创建的对象)。

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

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

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

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

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

【问题讨论】:

  • http 会话数据呢

标签: node.js express middleware


【解决方案1】:

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

【讨论】:

  • 太好了,谢谢。这周我会试一试,然后在这里报告。感谢您的回复。
猜你喜欢
  • 2020-07-13
  • 2011-10-15
  • 2013-12-23
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
  • 2017-12-31
  • 2010-10-21
相关资源
最近更新 更多