Meteor 某些流星数据源的寿命有多长?

Meteor 某些流星数据源的寿命有多长?,meteor,Meteor,MiniMongo系列通常与Mongo系列同步,因此它的生命基本上是永恒的 我想存储一个购物车对象。当用户登录时,存储和管理购物车数据的持续时间很容易。但是,当用户未登录时该怎么办?你不想让他们浏览到网站的其他部分,甚至刷新页面,彻底清除他们的购物车。但是你也不想把购物车存放太久。将内容存储一天或几个小时就足够了 miniMongo本地集合(new Mongo.Collection(“null”);)持续多长时间?我可以将购物车的内容存储在本地集合中,还是在页面刷新时删除集合 同样,会话变量持续

MiniMongo系列通常与Mongo系列同步,因此它的生命基本上是永恒的

我想存储一个
购物车
对象。当用户登录时,存储和管理购物车数据的持续时间很容易。但是,当用户未登录时该怎么办?你不想让他们浏览到网站的其他部分,甚至刷新页面,彻底清除他们的购物车。但是你也不想把购物车存放太久。将内容存储一天或几个小时就足够了

miniMongo本地集合(
new Mongo.Collection(“null”);
)持续多长时间?我可以将购物车的内容存储在本地集合中,还是在页面刷新时删除集合

同样,会话变量持续多长时间

---答覆摘要---

  • 会话变量-页面刷新后死亡,被动
  • 本地集合-页面刷新后死亡,被动
  • LocalStorage API-会持续不同的时间段,从永久到选项卡关闭,而不是被动的,不同的浏览器有不同的存储和检索LocalStorage的方法,因此代码非常复杂
  • 使用Amplify的LocalStorage--基本上是使用LocalStorage API的一种更简单的方法
  • 使用时间戳将数据存储到Mongo集合中。使用该时间戳运行cronjob,该job在设定的时间量后定期删除数据-反应性,在所有计算机和浏览器中持续存在,让您完全控制数据过期的方式和时间,需要更多的编码和设置

页面刷新后,会话变量和本地集合将被删除,因此您可以从可能性列表中删除它们

另一种方法是将购物车数据存储在中。可以通过直接调用localStorage API来实现,如果需要支持较旧的浏览器,也可以使用类似polyfill()的函数。这种方法的唯一问题是,它不能跨浏览器/计算机工作,并且不能在选项卡之间进行反应


我的建议是将购物车数据存储在一个集合中,该集合维护一个
updatedAt
时间戳。然后添加定期删除
updatedAt
早于X小时的所有Cart的。这具有跨选项卡/浏览器/计算机进行反应性工作的优势,并且您可以完全控制购物车何时过期(包括添加奇特的规则,例如如果用户碰巧连接,则不使购物车过期).GroundDB的目标是在Collections API的基础上创建一个精简的包装器,这样您就可以在本地持久化连接,而无需太多的编码开销,即使对于脱机访问也是如此。重新连接时,数据将刷新。

创建数据库对象时,代码可能应该在数据库对象上存储时间戳和过期日期。此外,会话变量存储在HTML5本地存储器中。因此,它们与浏览器绑定,因此您不能依赖浏览器来存储必须从其他浏览器(即移动浏览器与固定浏览器、家庭浏览器与办公室浏览器等)获取的信息。@Paul,HTML5本地存储-有趣。似乎有两种类型:HTML本地存储为在客户端上存储数据提供了两个对象:window.localStorage-存储没有过期日期代码的数据。sessionStorage-存储一个会话的数据(关闭选项卡时数据丢失)。我想知道会话使用哪种类型?本地收藏呢?它们也在HTML5本地存储中吗?“HTML5 sessionStorage对象与localStorage对象相同,只是它只存储一个会话的数据。当用户关闭浏览器窗口时,数据将被删除。”基于此,我猜Meteor会话变量存储为HTML5 SessionStorage对象,只要用户打开选项卡,它就会一直存在?现在我不太确定。我去了meteorpad.com,弹出了一个chrome调试窗口,完成了Meteor应用程序采用的
Session.set('name','Me')
。在localStorage和sessionStorage中找不到“name”。我已将我的发现摘要添加到OP中。如何将保存到数据库的购物车与从未登录的人链接?如果用户在创建购物车时登录,一切都很简单。但是如果用户从未登录,如何将此临时购物车与未登录的用户连接?我将使用本地存储。当您检测到用户已登录时,只需从本地存储中删除数据并将其插入集合。虽然没有这么好,但如果没有唯一的用户标识符,这可能是您能做的最好的了。@fuzzybabybunny您可能想看看在中是如何做到这一点的。