首页 > 解决方案 > Node.js 和 mongoDB 多并发请求购物车结账功能

问题描述

参考Node.js服务器多并发请求后,它是如何工作的?

我仍然无法理解 Node.js 在并发方面是如何与 MongoDB 一起工作的。

例如,我有一个 API,用户将从购物车中结帐。(例如库存中有2双鞋,有3个用户同时购买。预期结果是第3个用户将无法购买。但它怎么知道哪个用户不会得到鞋子? )

当按下结帐按钮时,我可以在 Mongodb 中使用“事务”来确保所有流程(例如向客户收费、更新库存减少 1、为该用户添加项目到运输)只有在所有流程都成功时才会写入。

但是如果同时发生 3 笔交易呢?还是我太偏执了,这种情况在现实生活中不会发生。

如何使用邮递员模拟这个?还是卷曲?

在处理可能被并发修改(例如增量计数器)破坏的复杂数据时,我想实现类似于firebase 提供的功能。

标签: node.jsmongodb

解决方案


我曾经使用 Postman 尝试过类似的事情。我正在为注册到应用程序的用户生成一个 ID,该 ID 会自动递增。因此,基本上第一个用户获得 ID 1,第二个用户获得 ID 2,依此类推。为了生成一个 ID,我从 mongodb 获得了最大的 ID,将其递增 1 并将其分配给下一个用户。现在,如果 2 个用户同时注册会发生什么。我同时使用 Postman 注册了 2 个用户,结果和我预期的一样,他们都得到了相同的 ID。现在,你如何预防它?您可以通过使用锁来做到这一点。您必须对集合使用 MongoDB 锁,因此一次只有一个用户可以访问它。


推荐阅读