2015-07-13 4 views
0

Мне нужно создать следующий процесс. У меня есть две конечные точки, и мне нужно передать во вторую конечную точку результат первой конечной точки в выражениях. Я думал, чтобы сделать что-то вроде руководство показывает:Цеповые запросы в expressjs

var cb0 = function (req, res, next) { 
    console.log('CB0'); 
    next(); 
} 

var cb1 = function (req, res, next) { 
    console.log('CB1'); 
    next(); 
} 

var cb2 = function (req, res) { 
    res.send('Hello from C!'); 
} 

app.get('/example/c', [cb0, cb1, cb2]); 

Как я должен перейти ко второму одной функции результат, полученный от первого?

ответ

5

вам необходимо создать новое свойство параметра REQ как

var cb0 = function (req, res, next) { 
    // set data to be used in next middleware 
    req.forCB0 = "data you want to send"; 
    console.log('CB0'); 
    next(); 
} 

var cb1 = function (req, res, next) { 
    // accessing data from cb0 
    var dataFromCB0 = req.forCB0 

    // set data to be used in next middleware 
    req.forCB1 = "data you want to send"; 
    console.log('CB1'); 
    next(); 
} 

var cb2 = function (req, res) { 
    // accessing data from cb1 
    var dataFromCB2 = req.forCB1 

    // set data to be used in next middleware 
    req.forCB2 = "data you want to send"; 
    res.send('Hello from C!'); 
} 

app.get('/example/c', [cb0, cb1, cb2]); 
2

Простая вещь,

Просто добавьте результат одной цепи, чтобы запросить объект, так что вы можете получить доступ к этому объекту в другой.

Вот твой код.

var cb0 = function(req, res, next) { 
 
    req["CB0"] = "Result of CB0"; 
 

 
    console.log('CB0'); 
 
    next(); 
 
} 
 

 
var cb1 = function(req, res, next) { 
 
    req["CB1"] = "Result of CB1"; 
 
    console.log('CB1: Result of CB0: ' + req["CB0"]); 
 
    next(); 
 
} 
 

 
var cb2 = function(req, res) { 
 
    console.log('CB2: Result of CB0: ' + req["CB0"]); 
 
    console.log('CB2: Result of CB1: ' + req["CB1"]); 
 
    res.send('Hello from C!'); 
 
} 
 

 
app.get('/example/c', [cb0, cb1, cb2]);