我无法在函数之间发送res
(请求对象)。下面的代码由我的app.js(主要的express中间件)执行:
//app.js calls File.js
//File1.js
var file2 = require('./File2.js);
export.modules = function (req,res,next) {
file2(data) {
res.send(data); //<-- this is not working
}
}
//File2.js
export.modules = function(data){
data = 'test';
}
我也不明白什么时候使用next()
,什么时候使用res.end()
。
从你的代码片段中很难理解,所以我将解决你关于next vs send的第二个问题
您在中间件中使用next,这意味着您还不想用数据响应客户端,但您希望处理来自另一个中间件的数据,当您到达最终中间件时,您需要使用res.send();
注意,不能多次使用res.send,所以必须在完成处理并希望将数据响应给用户时调用它。
必须使用express中间件,如下所示:
var app = express();
app.use(function(req,res, next){
// some proccessing
req.proccessData = "12312312";
next();
})
app.use(function(req,res, next){
// here you respond the data to the client
res.send(req.proccessData);
})
你也可以在路由(get, post等)中使用它。当你想要将数据发送到下一阶段时,只需将next作为第三个参数添加到路由