Javascript Meteor JS:没有登录的购物车-会话id等

Javascript Meteor JS:没有登录的购物车-会话id等,javascript,mongodb,meteor,e-commerce,shopping-cart,Javascript,Mongodb,Meteor,E Commerce,Shopping Cart,我在做一个电子商务项目。 我希望电子商务网站的客户能够添加项目到购物车和结帐,而无需登录 为此,我决定将客户希望添加到购物车中的物品存储在一个集合中。 e、 g 为了将该客户的购物车项目与其他客户区分开来,我决定添加一个额外的字段 var sessid = Meteor.default_connection._lastSessionId; e、 g 添加到CartItems集合的文档 此解决方案的问题是,每当刷新页面时,最后一个会话Id都会更改,因此购物车再次变为空,即使同一用户仍在使用该页

我在做一个电子商务项目。 我希望电子商务网站的客户能够添加项目到购物车和结帐,而无需登录

为此,我决定将客户希望添加到购物车中的物品存储在一个集合中。 e、 g

为了将该客户的购物车项目与其他客户区分开来,我决定添加一个额外的字段

 var sessid = Meteor.default_connection._lastSessionId;
e、 g

添加到CartItems集合的文档

此解决方案的问题是,每当刷新页面时,最后一个会话Id都会更改,因此购物车再次变为空,即使同一用户仍在使用该页面

此外,添加到集合中的文档不会被清理(删除),因为我无法检测会话是否将由浏览器/用户结束

1)这个问题的理想解决方案是什么

2.)我如何实现购物车,使其知道即使页面已刷新,使用网站的用户很可能是同一个人,因此它仍应在购物车中保留相同的项目? 我目前的解决方案是使用会话ID来区分一个购物车项目和另一个购物车项目,这似乎不适合解决这个问题

3.)使用我当前的使用上次会话ID的解决方案,集合最终将充满具有过去会话ID的购物车项目,我希望在应用程序中为此提供自动清理功能。最好的清理方法是什么? 有没有办法检测“会话结束”


非常感谢。

我认为该方案解决了其中一些问题。您可能想看看它的实现。为什么不使用缓存的本地集合呢?抵抗刷新和崩溃。在购物车验证和上载之前,服务器上没有任何内容。我同意@Kyll的说法,但如果您确实希望将数据保留在服务器上,只需生成一个
Random.id()
,并使用
localStorage[“cartSessionId”]=theRandomId保存到本地存储
以及服务器上的cart文档上的sessionId字段或类似字段。在生成随机id之前,请检查cartSessionId是否尚未设置,并且您应该有一种持久的方法来标识匿名用户。
 var sessid = Meteor.default_connection._lastSessionId;
{
    "_id" : "HCo7JYsaruYBNQuC9",
    "qty" : 1,
    "productid" : "hAajzGxpLK4zJ3pXW",
    "session" : "uqTiaeqiawsxLMu7A"
}