2013-12-12 3 views
0

У меня есть 3 файла: server.js, bookhandler.js, books.jsExpress.js маршрутизации между файлами

я предполагаю, что там будут запросы, как:/книги/имя,/книга/типа,/книга и т. д. в соответствии с первым полем в URL-адресе, который является книгой (это также может быть видео и журнал), я хочу, чтобы мой сервер.js направил меня в файл bookhandler.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 экспортирует функцию с именем middleware в свой объект module.exports. Эта функция при вызове будет передана ссылка на объекты запроса и ответа. Объект запроса имеет в нем параметры.

Например:

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

Это замечательно, но позволяет предположить, что я отправляю в/books/id. с вашей функцией он отлично передает параметр обработчику, но как я могу передать его в book.js и сделать app.post для/books/id с параметрами. Спасибо большое! – user3095297

+0

То же самое. Файлы неактуальны. Маршрутизация запроса основана на вызовах функций, в каких бы файлах они ни находились. – Brandon

+0

так как я могу вызвать app.post ('/ init', function (req, res) {}); от промежуточного ПО – user3095297

Смежные вопросы