Javascript Node.js Express如何在中间件之间传递数据?
我试图在Node/Express中以平均堆栈的形式将数据从一个中间件发送到另一个中间件,我设置了一个路由,其中我有两个命名函数,一个查询一些数据并将其传递给第二个函数,该函数应该对数据进行其他处理。。。下面是我的路由函数,它在“get”方法上有两个中间件函数: 这些功能的实现如下所示,只是为了演示/试用的目的而做的简单工作Javascript Node.js Express如何在中间件之间传递数据?,javascript,node.js,express,callback,middleware,Javascript,Node.js,Express,Callback,Middleware,我试图在Node/Express中以平均堆栈的形式将数据从一个中间件发送到另一个中间件,我设置了一个路由,其中我有两个命名函数,一个查询一些数据并将其传递给第二个函数,该函数应该对数据进行其他处理。。。下面是我的路由函数,它在“get”方法上有两个中间件函数: 这些功能的实现如下所示,只是为了演示/试用的目的而做的简单工作 exports.list_all_Demonstrator = function(req, res,next) { //console.log(req.body)
exports.list_all_Demonstrator = function(req, res,next) {
//console.log(req.body)
Demonstrator.find({}, function(err, demo) {
if (err){
console.log(err);}
else {
res.locals.myvar = demo;
}
});
next();
};
exports.doSomeStuff = function(req,res,next) {
var data;
data = res.locals.myvar
console.log("Dies ist 2te Funktion:", data);
res.send(data);
}
我在某处见过这个例子。。。然而,他们确实实现了它,他们只是一个接一个地定义匿名函数,用逗号分隔,但我想使用命名函数,并在路由文件中使用它们作为Express routing function中间件的参数。。
但是,我有一个问题,第二个函数中的数据是“未定义的”,我不明白为什么这不起作用,这与函数有关吗?也许我必须定义我的函数,否则?还是我的回调错误了?
演示程序。find
是一个异步函数,因此您应该像这样在其回调中调用next
exports.list_all_Demonstrator = function(req, res,next) {
//console.log(req.body)
Demonstrator.find({}, function(err, demo) {
if (err){
console.log(err);
}
else {
res.locals.myvar = demo;
}
next(); // <------------
});
};
exports.doSomeStuff = function(req,res,next) {
var data;
data = res.locals.myvar
console.log("Dies ist 2te Funktion:", data);
res.send(data);
}
exports.list\u all\u演示器=功能(请求、恢复、下一步){
//控制台日志(请求正文)
Demonstrator.find({},函数(err,demo){
如果(错误){
控制台日志(err);
}
否则{
res.locals.myvar=demo;
}
next();//只是为了不让你的生活过于复杂,看一看。有更简单的方法可以做到这一点。哇,非常酷,只需将next()放在函数中,现在就可以了,谢谢。
exports.list_all_Demonstrator = function(req, res,next) {
//console.log(req.body)
Demonstrator.find({}, function(err, demo) {
if (err){
console.log(err);
}
else {
res.locals.myvar = demo;
}
next(); // <------------
});
};
exports.doSomeStuff = function(req,res,next) {
var data;
data = res.locals.myvar
console.log("Dies ist 2te Funktion:", data);
res.send(data);
}