我读了documentation关于用mongodb实现购物车的方法,但我对流程有疑问。
通过此实现,每次用户在购物车中输入产品时,在用户执行结帐或购物车到期之前,其他买家都无法使用为客户保留的支付金额。
这种方法是有问题的,因为根据经验,大多数用户最终不会购买,在一段时间内将这些产品保留给他,因此负担不起。 这会导致销售损失。
例如:
- db中有一个产品有5个数量
- 客户“A”将金额为 5 的产品放入购物篮
- 那么数据库中有 0 个可用产品
- 另一位客户“B”进入网站但无法购买该产品
- 最终客户“A”离开网站,购物车已满。
- 购物车将在一小时后自动清除。
结果:任何人都无法购买该产品的一个小时!
我认为更好的方法是仅在结账时检查和更新实际金额。
这样,您就不会长时间失去销售。
这种方法的问题在于金额原子更新的实现。
您对这种方法有何看法?
您正在计划实现吗?
最佳答案
如果我是您,我会为放入购物车的每个产品使用同一集合中的多个记录,但在“购物车内”类型文档的索引上使用 10 分钟 TTL(请参阅 mongo TTL 文档)。然后,使用 db.col.aggregate(...) 您可以对这些记录求和并从可用总数中扣除计数。如果用户没有购买就离开,TTL将自动删除文档。如果他购买了,您实际上可以使用 doc.update 和 $inc 的负值从可用总量中扣除,并删除关联的购物车内文档。
产品文档:
{
type: 'product'
product_id: 123,
available: 4
}
购物车内的文档数量与“正在进行的购物”或废弃的购物车一样多:
{
type: 'in-cart'
product_id: 123,
customer_id: 1,
taken: 2
}
{
type: 'in-cart'
product_id: 123,
customer_id: 2,
taken: 1,
}
关于node.js - Mongodb购物车,如何查看和更新库存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32445669/