Node.js和mongoDB多个并发请求购物车结帐功能

时间:2019-05-17 09:03:03

标签: node.js mongodb

参考Node.js server with multiple concurrent requests, how does it work?

之后

就并发性而言,我仍然无法理解Node.js如何与MongoDB协同工作。

例如,我有一个API,用户可以在其中从购物车中结帐。 (例如,在库存中有2双鞋子可供使用,并且有3个用户同时购买。预期结果是第3个用户将无法购买它。但是,它如何知道哪个用户不会获得这双鞋子? )

当按下结帐按钮时,我可以使用Mongodb中的“交易”来确保所有过程(例如,向客户收费,更新库存以减少1,向该用户添加商品)将仅在所有过程中写入成功。

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

如何使用邮递员对此进行模拟?还是卷曲?

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

1 个答案:

答案 0 :(得分:0)

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