总的来说,我对 Node.js 和服务器端 JS 很陌生。
我来自 Java EE,习惯于使用有状态对象(不是 EJB,我使用 CDI),例如 MVC。 我的目标是保留一些与例如相关的数据。一个 session 。
Java EE 中的 CDI 知道以下状态范围:
- 应用程序范围(= 与单例模式相同)
- session 范围(状态在用户的 session 生命周期内保留,例如登录的用户)
- 对话范围(为已识别的对话保留状态,例如购物车)
- Flash 范围(状态保留在两个请求之间)
如何使用 Node 来不使用数据库,仅使用有状态对象来完成所有这些工作?
最佳答案
您需要类似 connect 的内容为您跟踪 session 状态,因为这是这些范围中最不重要的。完成后,您可以执行以下操作。
- 应用程序范围(=与单例模式相同)
- 在 HTTP 服务器实例上设置属性:
myServer.totalRequestsServed = 0
- 或者您可以使用进程范围的全局:
global.totalRequestsServed = 0
- 在 HTTP 服务器实例上设置属性:
- session 范围(状态在用户的 session 生命周期内保留,例如登录的用户)
- 为此使用连接 session 中间件:
req.session.user = myUser
- 为此使用连接 session 中间件:
- 对话范围(为已识别的对话保留状态,例如购物车)
- 我不太清楚“对话范围”的含义,但我会将其粘贴在 session 用户或共享哈希对象中。
session.user.shoppingCart = {}
- 我不太清楚“对话范围”的含义,但我会将其粘贴在 session 用户或共享哈希对象中。
- Flash 范围(状态保留在两个请求之间)
- 为此使用 session 或请求。 npm 中有现有的模块可以为您提供帮助,例如
req.flash("Welcome!")
。请参阅connect-flash例如。
- 为此使用 session 或请求。 npm 中有现有的模块可以为您提供帮助,例如
关于java - Node.js 有状态服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21970880/