2017-09-15 68 views
0

我工作的地方,我們有一些定義的API路線這樣的MEAN項目:如何將參數發送到Express路由中的中間件功能?

//products.controller.js 
var express = require('express'); 
var router = express.Router(); 
const m = require('../../middlewares'); 

router.get('/products', [m.functionA, m.functionB, m.functionC], getProducts); 
router.post('/products', [m.functionA, m.functionB, m.functionC], addNewProduct); 

module.exports = router; 

function getProducts(req, res) { 
    //code 
} 

function addNewProduct(req, res) { 
    //code 
} 

..............

//middlewares.js 

function functionA(req, res, next) { 
    //code 
} 

function functionB(req, res, next) { 
    //code 
} 

function functionC(req, res, next) { 
    //code 
} 

這裏現在我可以訪問req,res和next。我如何將自定義參數傳遞給這些中間件功能?

我看了看一些所謂的問題和其他物品,發現我可以這樣做:

[m.functionA('data'), m.functionB('data'), m.functionC('data')] 

但在這樣做,我得到錯誤REQ,資源沒有定義。

任何人都可以請幫助/建議如何實現這一點。 讓我知道是否需要在這裏添加任何其他細節。

回答

1

如果你想使用m.functionA('data'),除快遞中間件一種常見的範例是創建一個函數,它的參數作爲參數,並返回一箇中間件功能

function functionA(customParameter) { 
    return function(req, res, next) { 
    // code 
    } 
} 

內部函數(一個被退回)可以訪問customParameter以及req/res/next

0

你可以調用該函數與您在使用apply

function getProducts(list) { 
    console.log(list); 
} 

getProducts.apply(null,['foo','bar']) 
喜歡爭論
相關問題