我正在建立一个学校管理系统。当教师发送帖子请求时,在我的后端我在路线中创建一个全局对象。因此,当多个教师访问服务器时,将创建多个全局对象....或者每个教师访问同一个对象?(它是同一个对象吗?)
答案 0 :(得分:0)
我真的希望通过在路线中创建一个全局对象,这意味着你要创建一个属性 -
1。 global
对象本身 - global.myGlobalObj = { some-var: 'some-val' }
或
2。 process
对象 - process.myGlobalObj = { some-var: 'some-val' }
或
3。 express-app
- 可能类似于app.set('myGlobalObj', someOb)
或者可能在某些其他全球对象上。在这种情况下,每个请求 - 响应周期都将获得对同一对象的访问权。
但是,对于您打算开发的任何类型的系统,严格不建议使用此做法。主要原因是 -
很不稳定。一旦您的应用程序崩溃,取决于您的全局对象的当前值的每个request
都不会正确完成,因为该值已经因崩溃而丢失/重置。
它不遵守REST架构的原则,即每个请求都必须是无状态的,并且应该包含足以成功完成请求所需的数据/参数。
Globals是面向对象编程和功能编程范式存在的原因之一。全局变量使您的应用程序更容易受到攻击,更难理解且难以测试。
<强>解决方案强>
如果与变量访问相关的性能无关紧要,只需将变量存储在支持索引的数据库中,并在每个请求中访问它,否则使用in-memory database
,例如Redis
。< / p>