Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js Express如何在中间件之间传递数据?_Javascript_Node.js_Express_Callback_Middleware - Fatal编程技术网

Javascript Node.js Express如何在中间件之间传递数据?

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)

我试图在Node/Express中以平均堆栈的形式将数据从一个中间件发送到另一个中间件,我设置了一个路由,其中我有两个命名函数,一个查询一些数据并将其传递给第二个函数,该函数应该对数据进行其他处理。。。下面是我的路由函数,它在“get”方法上有两个中间件函数:

这些功能的实现如下所示,只是为了演示/试用的目的而做的简单工作

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);
}