2016-05-08 143 views
3

我正在使用来自“connect-mongo”的MongoStore的“快速会话”。现在根据我的理解,会话以某种方式存储在mongodb中。可以说我已经在会话中存储了用户名。从node.js会话获取信息与从数据库获取信息

现在,可以说我经常需要用户喜欢的颜色。我有两种做法。在会话中存储最喜欢的颜色,或使用会话中的用户名查询数据库。

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

回答

3

检索会话数据需要数据库查询。如果您想在会话中存储最喜欢的颜色,获取该首选项将需要一个查询。

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

所以,如果你知道在一个会话期间你将需要很多颜色信息,最好是将这些信息复制到会话中(尽管不要期望性能有大的提升,MongoDB和你的操作系统会尝试尽可能将经常使用的数据库记录保存在内存中)。

可能的缺点是,如果更改首选项,需要更新多个文档(如果用户更改了他们喜欢的颜色,则需要更新会话文档和数据库中的用户文档)。

+0

我想知道会话是否比数据库查询更快,但不要猜测。所以这只是另一个背景数据库查询。感谢您清理它。 – forthright48

+0

会话数据存储为其他任何MongoDB文档:-) – robertklep