2015-11-20 2 views
1

At server.js я получил следующее:требуют папку в качестве модуля в другой папке модуля

app.use(require('./server/rest-api/v1/products')); 
app.use(require('./server/rest-api/v1/product-categories')); 
app.use(require('./server/rest-api/v1/measuring-units')); 
app.use(require('./server/rest-api/v1/inventory')); 
app.use(require('./server/rest-api/v1/suppliers')); 
... 

То, что я хочу сделать из /server/rest-api/v1 модуля, это означает, что он нуждается в index.js , но что бы это содержать, так что я буду только сделать следующее в server.js:

app.use(require('./server/rest-api/v1'); 

Вот одна из папок, как модули у меня есть, если необходимо, чтобы понять, что я спрашиваю:

/server/rest-api/v1/products/index.js

module.exports = (function() { 

    var express  = require('express'), 
     router   = express.Router(), 
     create_product = require('./create-product.controller.js'), 
     list_product = require('./list-product.controller.js'), 
     detail_product = require('./detail-product.controller.js'), 
     update_product = require('./update-product.controller.js'); 

    router.route('/api/v1/purchases/products/new') 
     .post(create_product.post); 

    router.route('/api/v1/purchases/products/list') 
     .get(list_product.get); 

    router.route('/api/v1/purchases/products/detail/:id') 
     .get(detail_product.get); 

    router.route('/api/v1/purchases/products/update') 
     .put(update_product.put); 

    return router; 

})(); 

ответ

2

Вы хотите /server/rest-api/v1/index.js выставить уникальный Router, который использует суб-маршрутизаторы, каждый из которых соответствует одной из папок (продукты, product_categories и т.д.)

/server/rest-api/v1/index.js

var express = require('express'), 
    router = express.Router(), 
    product_router = require('./products'), 
    product_categories_router = require('./product_categories'); 

router.use(product_router); 
router.use(product_categories_router); 
// etc. 

module.exports = router; 

На стороне записки, если вы имеете дело с большим количеством маршрутов, таким образом, это может быть удобней для вас, чтобы определить вашу точку входа API раз ('/api/v1'), при установке маршрутизатора. Таким образом, ваши «бизнес-маршрутизаторы» не обязательно должны знать путь входа (и это не имеет для них значения), что удобно, если вам когда-либо понадобится изменить этот путь в один прекрасный день.

Затем опять же это зависит от вас и как вы хотите создать свой сервер :)

Пример:

server.js

app.use('/api/v1', require('./server/rest-api/v1')); 

/сервер/отдых-апи /v1/index.js

var express = require('express'), 
    router = express.Router(), 
    product_router = require('./products'); 

router.use('/purchases/products', product_router); 
module.exports = router; 

/server/rest-api/v1/products/index.js

var express = require('express'), 
    router = express.Router(), 
    create_product = require('./create-product.controller'); 

router.route('/new').post(create_product.post); 
module.exports = router; 
+0

Спасибо! :), я предпочитаю самоосуществляющуюся функцию для module.exports пути –

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