[英]Node.js Express How to pass data between middleware?
我正在嘗試將Node / Express中MEAN Stack中的數據從一種中間件發送到另一種中間件,我設置了一條路由,其中有2個命名函數,一個查詢一些數據並將其傳遞給第二個函數,該第二個函數應該進行其他處理在數據上...這是我的路由功能,在“ get”方法上具有2個中間件功能:
function DemonstratorRoutes(router) {
var DemonstratorController = require('../controllers/DemonstratorController')
router.route('/Demonstrator')
.get(DemonstratorController.list_all_Demonstrator, DemonstratorController.doSomeStuff)
module.exports = DemonstratorRoutes;
功能的實現如下,其只是用於演示/試用目的的簡單內容。.:
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路由的參數函數中間件.. 但是,我有一個問題,第二個函數中的數據是“未定義的”,我不明白為什么這不起作用,與函數提升有關嗎? 也許我必須定義我的功能嗎? 還是我的回調錯誤?
Demonstrator.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);
}
否則, next
將您分配之前調用demo
給res.locals.myvar
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.