我们在Express应用程序中req.session与req.app与app.set的区别。说我有redis会话商店。它们都保存在会话存储或内存中。
答案 0 :(得分:2)
Express的核心没有会话处理实现。您必须使用session中间件,然后将其用于处理会话。 (它通过快速发电机自动安装)
如果您查看会话模块的文档,您会发现它可以使用不同类型的存储来存储会话数据。默认情况下使用内存,因为设计内存泄漏,应仅用于开发目的。对于制作,您可以使用自己选择的商店,例如connect-redis,connect-mysql和其他许多商店。
回答你的问题:
req.session
会话数据。req.app
是表达应用程序实例的引用并且具有
与会话无关。app.set
用于设置应用程序级别的本地人,没有任何内容
做会话。答案 1 :(得分:0)
req.app
是对与处理当前请求的路由处理程序关联的Express app
对象的引用。这使您可以更轻松地访问该app
对象,尤其是在单独模块中定义路由时。
所以,如果你做了这样的事情:
app.get('/viewdirectory', require('./mymiddleware.js'))
然后,该中间件能够在请求期间通过app
到达req.app
对象,否则它将无法具有该功能而无需手动传递app
对象方便的模块构造函数。
app.set()
能够在app
对象上设置各种配置选项。这些选项记录在案here。
req.session
是某些会话中间件使用的会话对象。 Express未预先配置内置会话管理。 Express有许多不同的会话附加组件。其中一些使用中间件将会话置于req.session
中,因此您可以在任何请求处理程序中轻松访问它。将会话引用放在req.session
中是一种常见的约定,可以使请求处理程序在处理请求时轻松获取。
会话实际存储在请求之外的较长持续时间取决于特定会话实现。一些会话只存储在内存中的JS对象中。有些存储在像redis这样的共享内存数据库中。有些存储在常规的基于文件的数据库中。某些会话实现允许您选择要使用的会话存储类型。