【问题标题】:Getting information from node.js session vs getting it from database从 node.js 会话中获取信息与从数据库中获取信息
【发布时间】:2016-09-03 04:10:46
【问题描述】:

我正在将“express-session”与“connect-mongo”中的 MongoStore 一起使用。现在根据我的理解,会话以某种方式存储在 mongodb 中。假设我已将用户名存储在会话中。

现在,假设我经常需要用户最喜欢的颜色。我有两种方法。将喜欢的颜色存储在会话中,或者使用会话中的用户名查询数据库。

现在我的问题是,由于会话存储在数据库中,因此从会话中查询最终将查询数据库。那么,这两种方法有什么区别。如果它们不同,哪个更好?

【问题讨论】:

    标签: node.js mongodb session express


    【解决方案1】:

    检索会话数据需要数据库查询。如果您要将最喜欢的颜色存储在会话中,则需要进行一次查询才能获得该偏好。

    如果您不在会话中存储颜色,则需要两个数据库查询:一个用于会话,一个用于保存颜色偏好的用户数据。

    因此,如果您知道在会话期间您将需要大量颜色信息,最好将该信息复制到会话中(尽管不要期望性能大幅提升,MongoDB 和您的操作系统会尝试并保持内存中尽可能多的使用数据库记录)。

    一个可能的缺点是,如果偏好发生变化,您需要更新多个文档(如果用户更改了他们最喜欢的颜色,您需要同时更新会话文档和数据库中的用户文档)。

    【讨论】:

    • 我想知道 session 是不是比数据库查询更快的魔法,但我猜不是。所以这只是后台的另一个数据库查询。感谢您清理它。
    • 会话数据存储为任何其他 MongoDB 文档 :-)
    猜你喜欢
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 2021-01-06
    • 2014-06-14
    相关资源
    最近更新 更多