【发布时间】:2014-10-27 04:41:52
【问题描述】:
MiniMongo Collection 通常会与 Mongo Collection 同步,因此它的生命基本上是永远的。
我想存储一个Shopping Cart 对象。当用户登录时,存储和管理购物车数据的持续时间很容易。但是当用户没有登录时呢?您不希望他们导航到网站的其他部分,甚至不希望刷新页面并彻底清除他们的购物车。但您也不想将购物车存放太久。将内容存储一天或几个小时就足够了。
miniMongo 本地集合 (new Mongo.Collection("null");) 能持续多久?我可以将购物车内容存储在本地集合中,还是在页面刷新时该集合会被擦除?
同样,一个 Session 变量能持续多久?
--- 答案总结---
- 会话变量 - 页面刷新后死亡,反应性
- 本地集合 - 页面刷新后死亡,反应性
- LocalStorage API - https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage,持续不同的时间段,从永远持续到关闭选项卡时,不是响应式的,不同的浏览器有不同的方式从 LocalStorage 存储和检索,因此代码复杂。
- LocalStorage 使用 Amplify - http://amplifyjs.com/ - 基本上是使用 LocalStorage API 的一种更简单的方法。
- 将数据存储到带有时间戳的 Mongo 集合中。使用该时间戳运行一个 cronjob,该 cronjob 在一定时间后定期删除数据 - 反应式,在所有计算机和浏览器中持续存在,让您完全控制数据过期的方式和时间,需要更多的编码和设置
【问题讨论】:
-
也许代码应该在创建数据库对象时存储时间戳和过期日期。此外,会话变量存储在 HTML5 本地存储中。因此,它们与浏览器相关联,因此您不能依赖它来存储必须从其他浏览器(即移动与固定、家庭与办公室等)获得的信息。
-
@Paul,HTML5 本地存储 - 很有趣。看起来有两种类型: HTML本地存储提供了两个对象用于在客户端存储数据:window.localStorage - 存储没有过期日期代码的数据.sessionStorage - 存储一个会话的数据(关闭选项卡时数据丢失)我想知道 Session 使用什么类型?本地收藏呢?它们也在 HTML5 本地存储中吗?
-
"HTML5 sessionStorage 对象等同于 localStorage 对象,只是它只存储一个会话的数据。当用户关闭浏览器窗口时,数据被删除。"基于此,我猜测 Meteor Session 变量存储为 HTML5 SessionStorage 对象,只要用户打开选项卡,它就会一直存在?
-
现在我不太确定。我去了meteorpad.com,弹出了一个chrome调试窗口并做了
Session.set('name','Me'),这是Meteor应用程序所采用的。在 localStorage 和 sessionStorage 中查找,'name' 是找不到的。
标签: meteor