2013-12-12 62 views
0

我有3個文件:server.js,bookhandler.js,books.jsExpress.js文件之間的路由

我認爲會有類似請求:/電子書/名稱,/電子書/類型/書等 根據url中的第一個字段,這是書(它也可以是視頻和雜誌),我想我的server.js引導我到posthandler.js文件與發佈參數。我只想在這裏我可以驗證參數的功能。如果參數是有效的,我想將參數傳遞給我的books.js文件,我可以使用這些有效參數來提出我的發佈請求。如果url的第一個字段是視頻,它應該引導我到視頻處理器等。

server.js

app.use('/book', require('./bookhandler').middleware); 

這是我做的,到目前爲止,並將其引導我到bookhandler文件,但我不知道如何獲得的參數和驗證功能

編輯裏面:

bookhandler.js 
var express = require('express'); 
var app = express(); 

module.exports.middleware = function (req, res) { 

    var id = req.body.id; 

    if(id.length==5) { 
     app.use('/id', require('../book').middleware)); 
    } 
}; 
book.js 
app.post('/id' , function (req, res) { 

}); 

module.exports = app; 

回答

0

你不直接執行一個文件,而是一個功能。文件只是組織功能或任何類型代碼的一種方式。

根據你給出的這個例子,我假設bookhandler.js在其module.exports對象中導出一個名爲middleware的函數。該函數在調用時將傳遞對請求和響應對象的引用。請求對象具有參數。

例如:

bookhandler.js: 

module.exports.middleware = function (req, res) { 
    var bookId = req.params.bookId; 
    // do something with bookId 
}; 

[編輯基於問題的最新更新]

你是壓倒一切的module.exports。將module.exports.middleware設置爲有效函數後,將module.exports全部替換爲對應用程序的引用。

刪除此行,您的問題應該解決。

module.exports = app; 
+0

多數民衆贊成在偉大的,但讓我們假設我發佈到/書/ ID。用你的函數完全傳遞參數給處理程序,但是我怎樣才能把它傳遞給book.js,並用參數傳遞給/ books/id一個app.post。非常感謝! – user3095297

+0

同樣的事情。文件無關緊要。請求路由基於函數調用,無論它們可能位於哪個文件中。 – Brandon

+0

因此,如何調用app.post('/ init',function(req,res){});從中間件 – user3095297