2017-05-11 37 views
-1

我正在通過Express進行路由。我的應用程序加載所有控制器,每個控制器都有多個操作然而,在我的控制器,快速路由器只加載默認的動作在我的控制器和錯誤與所有其他Express.JS中的多動作控制器?

不能得到/索引/ action1234


對於更具體的,這是我的代碼。
在app.js

fs.readdirSync('./controllers').forEach(function (file) { 
    if(file.substr(-3) == '.js') { 
     app.use(require('./controllers/' + file)); 
    } 
}); 


控制器路由index.js

var express = require('express'); 
var router = express.Router(); 
router.get('/', function(req, res) { 
    res.send("index/index"); 
}); 
router.get('/:action', function(req, res) { 
    res.send("index/"+req.params.action); 
}); 
module.exports = router; 

我必須通過「應用程序」參數到控制器,並使用這個代替路由器模塊的?
謝謝

+0

嗚嗚....實際上你的應用程序處理'/ action1234'而不是'/索引/ action1234' – mJehanno

+0

是的,我的錯誤是,這不是嵌套的路由器。 – carboncrystal

+0

你可以在'app.use(require('./ controllers/+ file))'中放入'/ index'作爲第一個參數;'但是它會爲你的所有未來路由或者你將所有的「前綴」以與控制器目錄中的文件相同的順序在數組中路由並遍歷它。但它意味着你必須在每次創建控制器時填充這個數組。 – mJehanno

回答

0

我加載所有控制器時通過放置路徑參數解決了我的問題。

fs.readdirSync('./controllers').forEach(function (file) { 
    if(file.substr(-3) == '.js') { 
     app.use('/'+file.substr(0, file.length - 3), require('./controllers/' + file)); 
    } 
}); 

感謝