Node.js 拒绝两个连续请求(NODEJ)
有时,如果第一个请求尚未完成,我们需要限制执行来自用户的重复请求。例如:我们确实希望在某个服务中注册用户,并且只有在注册后才能将其放入具有外部id的数据库。我希望有一个可以设置受保护路由的服务。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,
我通过检查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上有定制的解决方案吗?