2016-09-25 44 views
0

我正在用基本的CRUD操作以各種網絡的形式構建Web應用程序。我正在分割我的路由器文件,因爲它們變得相當大。如何在表達式中實現DRY路由器

我有一個'行動'路線,它可以做一些事情,比如在個人信息中選擇一個信息來查看,對信息進行投票,查看個人資料和讚揚用戶。我似乎無法找到一種方法讓我將這些「行動」路線分成單獨的文件,然後在主要路線中根據需要使用它們。

//index.js file in routes folder 
var express = require('express'); 
var router = express.Router(); 

//main route 
router.route('/feed') 
    .get(function(req, res, next){ 
    //some code here 
    } 

//actions.js file in routes folder 
var express = require('express'); 
var router = express.Router(); 

//vote route 
router.route('/vote/:id') 
    .post(function(req, res, next){ 
    //some code here 
    } 

//item route 
router.route('/item/:id') 
    .get(function(req, res, next){ 
    //some code here 
    } 

我希望能夠用行動路線飼料路線(和其他途徑)的內部,以便我可以做這樣的事情

POST /feed/vote/postid12356 
GET /feed/item/itemid123456 

,甚至在另一條路線稱爲「私人使用來自動作路線的相同動作的'進給'

POST /private-feed/vote/postid12356 
GET /private-feed/item/itemid123456 

而不必在許多路線中重複這些動作。

有什麼辦法可以表達這是可以做到的嗎?

回答

1

您可以提取你的路由處理成一個單獨的文件,讓我們稱他們爲controllers,然後在一些航線的複用邏輯:

//controllers/action.js 
module.exports = { 
    get: (req, res, next) => { 
    //your post logic 
    } 
} 

///routes/item.js 

const ActionController = require("../controllers/action"); 
router.route('/item/:id').get(ActionController.get); 
module.exports = router; 
+0

因此,例如在item.js每個路由我有對於每個動作 router.route('/ item /:id')。get(ActionController.get); router.route('/ vote /:id')。get(ActionController.get); 等 – aleks

+0

忘記了上面的回覆,做了一些測試,並設法讓它工作。謝謝一堆! – aleks

+0

@aleks不客氣! –