禁止访问Express路线,直到路线完成

时间:2019-11-13 13:39:22

标签: javascript express

我的Express REST-API中有一条路由可以执行一些数据库操作。我想阻止对REST-API的所有其他调用,直到该路由中的操作完成为止。

因此,当访问此路由时,在update-db-state完成之前,无法访问其他路由。

router.put('/update-db-state', (req, res) => {
  ... does a buch of database related stuff.
});

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

这听起来像是一个体系结构问题,但我建议您查看您要实现的目标,但是您可以执行以下操作:

let lock = false;
router.put('/update-db-state', (req, res) => {
   if (lock) {
       // send a res.end and return or do whatever you need like use a timeout etc etc
   }
   // when starting you process
   lock = true;
   ... does a buch of database related stuff.
   // when complete
   lock = false;
});

再次,我建议您像以前那样回顾一下执行此操作的决定,但这是一个简单的示例来演示。