似乎 req
和 res
变量在 Express 中具有全局范围(例如,无论函数范围如何,都可以访问这些变量)。如何在不导致并发客户端之间发生冲突的情况下实现这一目标?
最佳答案
它们没有全局作用域。
路线
路由为每个路由采用一个处理函数。该路由传递给 req
和 res
对象。
app.get('/my-route', myHandler);
处理程序
您的处理程序接收这些对象并使用它们。
exports.myHandler = function(req, res) {
res.send("Hello world");
);
闭包
当您进行数据库调用(或任何其他 io 绑定(bind)调用)时,您会向其传递一个回调。 req
和 res
对象作为闭包存在于该回调中。
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);
});
};
关于关闭的更多信息:How do JavaScript closures work?
关于node.js - Node + Express : How do the req and res variables have global scope without causing collisions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16902976/