Node.js 使传入请求在NodeJS(express)中串行执行

Node.js 使传入请求在NodeJS(express)中串行执行,node.js,express,Node.js,Express,我目前正在为一家医院开发代币预订系统,并使用MongoDB atlas作为数据库。由于网络延迟,并发请求会造成一些问题。因此,我试图让请求以串行方式执行,以避免使用相同的时间段保存任何预订 这是我的要求: 例如,我的传入请求正文的格式为: { ... "depatmentID":"dept1", ... } 基本上,当一个请求出现时会发生什么情况,如下所示: DepartmentDetails.findOne({department: departmentID}).then((de

我目前正在为一家医院开发代币预订系统,并使用MongoDB atlas作为数据库。由于网络延迟,并发请求会造成一些问题。因此,我试图让请求以串行方式执行,以避免使用相同的时间段保存任何预订

这是我的要求:

例如,我的传入请求正文的格式为:

{
  ...
  "depatmentID":"dept1",
  ...
}
基本上,当一个请求出现时会发生什么情况,如下所示:

DepartmentDetails.findOne({department: departmentID}).then((department) => {
    /* 
    1. fetch department details
    2. update some of the fields like : 
       incrementing total number of tokens booked, last token time slot etc..

    (there are some other computations as well)

    3. now update the details in MongoDB
    */
    DepartmentDetails.findOneAndUpdate({department: departmentID}, dataToUpdate).then((data) => {
        //4. send response
    })
})
对于具有相同
部门ID的所有(并发)请求
,我需要连续执行route函数
。我尝试过各种方法,但都不管用

请帮我做这个


提前感谢。

你是否考虑使用乐观锁而不是顺序执行请求?可能是这样的:?我想您希望在HTTP层上执行此操作,而不是在数据库上。要做到这一点并不容易,因为您需要跨请求维护一个有状态的队列,而Express中间件通常会针对每个请求工作。如果你没有时间构建你自己的解决方案,那就找一个能为你自己做这件事的库。好的。让我试试这个。谢谢。您也可以通过NodeJS
streams
管道处理请求来解决这个问题。然后,streams模块将充当异步队列。Ie:1)传入请求执行api处理程序。2) api处理程序对stream.Writable调用write(),并等待执行写入操作。3) 可写文件执行数据库操作