参考Node.js server with multiple concurrent requests, how does it work?
之后就并发性而言,我仍然无法理解Node.js如何与MongoDB协同工作。
例如,我有一个API,用户可以在其中从购物车中结帐。 (例如,在库存中有2双鞋子可供使用,并且有3个用户同时购买。预期结果是第3个用户将无法购买它。但是,它如何知道哪个用户不会获得这双鞋子? )
当按下结帐按钮时,我可以使用Mongodb中的“交易”来确保所有过程(例如,向客户收费,更新库存以减少1,向该用户添加商品)将仅在所有过程中写入成功。
但是如果同时发生3笔交易该怎么办?还是我太偏执,这种情况在现实生活中不会发生。
如何使用邮递员对此进行模拟?还是卷曲?
在处理可能被并发修改(例如增量计数器)破坏的复杂数据时,我想实现类似于firebase is offering的功能。
答案 0 :(得分:0)
我曾经用Postman尝试过类似的东西。我正在为用户注册到应用程序中生成一个ID,该ID会自动递增。因此,基本上,第一用户获得ID 1,第二用户获得ID 2,依此类推。为了生成一个ID,我从mongodb获取了最大的ID,将其递增1,然后将其分配给下一个用户。现在,如果两个用户同时注册会发生什么。我同时使用Postman注册了2位用户,结果与我预期的一样,他们都获得了相同的ID。现在,您如何预防呢?您可以使用锁来做到这一点。您将必须对集合使用MongoDB锁,因此一次只能有一个用户可以访问它。