Node + Express:req和res变量如何具有全局范围而不会导致冲突?

Dav*_*nes 2 global-variables node.js express

似乎reqres变量在Express中具有全局范围(例如,无论函数范围如何,这些变量都是可访问的).如何在不引起同时客户端冲突的情况下实现这一目标?

Dan*_*iel 6

它们没有全球范围.

路线

该路由为每个路由采用处理函数.该路由传递reqres对象.

app.get('/my-route', myHandler);
Run Code Online (Sandbox Code Playgroud)

处理器

您的处理程序接收这些对象并使用它们.

exports.myHandler = function(req, res) {
    res.send("Hello world");
);
Run Code Online (Sandbox Code Playgroud)

关闭

当您进行数据库调用(或任何其他io绑定调用)时,您将向其传递回调.在reqres对象住在回调的闭包.

exports.myHandler = function(req, res) {
  var weekday = req.query.weekday || "today";
  db.getWeather(weekday, function(err, result) {
    // `res` here is a closure
    if(err) { res.send(500,"Server Error"); return; }
    res.send(result);
  });
};
Run Code Online (Sandbox Code Playgroud)

关于闭包的更多信息:JavaScript闭如何工作?