【发布时间】:2022-01-31 20:27:52
【问题描述】:
我接手了一个项目,其中开发人员并不完全了解 Node.js 的工作原理,因此他们创建了使用 Mongoose 访问 MongoDB 的代码,当您有任何并发请求到达同一端点/修改时,这将在数据库中留下不一致的数据相同的数据。该项目使用 Express Web 框架。
我已经指示他们对此进行修复(基本上,将 Mongoose 事务支持与自动管理的可重试事务一起使用),但由于项目的规模,他们将花费大量时间来修复它。
我需要尽快将它投入生产,所以我想如果我能够保证传入请求的顺序处理,我可以尝试这样做。我完全知道这是一件坏事,但这只是一个临时解决方案(并发用户数量很少),直到适当的修复到位。
那么有没有办法让 Node.js 以顺序方式处理传入的请求?我只是基本上不希望来自不同请求的代码交错运行,或者换一种说法,我不希望非阻塞操作(.then()/await)屈服于另一个任务,而是阻塞直到异步操作结束,因此每个请求都在处理另一个请求之前被完全处理。
【问题讨论】:
标签: node.js express mongoose async-await concurrency