Node.js 拒绝两个连续请求(NODEJ)

Node.js 拒绝两个连续请求(NODEJ),node.js,express,request,sails.js,Node.js,Express,Request,Sails.js,有时,如果第一个请求尚未完成,我们需要限制执行来自用户的重复请求。例如:我们确实希望在某个服务中注册用户,并且只有在注册后才能将其放入具有外部id的数据库。我希望有一个可以设置受保护路由的服务。 我通过检查request.start()->时的标志解决了这个问题,并在请求完成后将其删除。无论如何,我正在寻找你们的建议。我认为你们需要自己将此构建到路由处理程序中: var inProgress = [] var handleRegisterRoute = function create(req,

有时,如果第一个请求尚未完成,我们需要限制执行来自用户的重复请求。例如:我们确实希望在某个服务中注册用户,并且只有在注册后才能将其放入具有外部id的数据库。我希望有一个可以设置受保护路由的服务。
我通过检查request.start()->时的标志解决了这个问题,并在请求完成后将其删除。无论如何,我正在寻找你们的建议。

我认为你们需要自己将此构建到路由处理程序中:

var inProgress = []
var handleRegisterRoute = function create(req, res, next) {

    var id = req.user.id

    var found = _.find(inProgress, function(item){
      return item = id
    })

    if(found){
        res.send('Dont think twice, its aright')
        return
    } else {
      inProgress.push(id)
      completeRegister()
      inProgress= _.without(inProgress, id);          
      req.send()
      return
    }
}

同样,这是psuedo代码——我将要写的要点。您可能需要将“inprogress”存储在整个服务器场可引用的更好的数据存储中—某种类型的数据库。

如果这仅适用于一个或有限数量的控制器,则可以在控制器执行开始时设置全局var/DB键,并检查是否存在。在成功和失败的情况下,密钥都必须取消设置。不幸的是,如果我们在应用程序上应用多个dyno,这将不起作用。heroku上有定制的解决方案吗?