मेरे पास एक एक्सप्रेस ऐप है जहां संरचना इस तरह जाती है

server/
  |---/model
  |---/routes
  |---/controllers
  |---index.js

मेरी index.js फ़ाइल में मैं item के लिए डिफ़ॉल्ट रूट को हैंडल कर रहा हूं

//index.js
const item = require('./routes/item');
const app = express();

// Endpoint for all operations related with /item
app.use('/item', item);

मार्ग निर्देशिका में मेरे पास एक फ़ाइल है item.js

//item.js

const express = require('express');

const router = express.Router();

const {
  deleteItemById,
  itemCreate,
  getItemById,
  updateItem
} = require('../controllers/item');

// Add new product
router.post('/create', itemCreate);

// Get product by id
router.get('/:id', getItemById);

// Delete product by id
router.delete('/:id/delete', deleteItemById);

// Update product by id
router.patch('/:id/update', updateItem);

module.exports = router;

सवाल यह है कि मैं इस मार्ग को पूरी तरह से रूट/आइटम.जेएस फ़ाइल में संभालने के लिए लाइन app.use('/item', item); को कैसे बाहर कर सकता हूं? Item.js फ़ाइल में ऐसा कुछ रखने के लिए:

router.use('/item')
router.post('foo bar')
router.get('foo bar); 

और मेरी अनुक्रमणिका में केवल require('./routes/item.js)

0
p7adams 23 जिंदा 2019, 11:23

2 जवाब

सबसे बढ़िया उत्तर

मुझे नहीं लगता कि आप ठीक वही कर सकते हैं जो आप चाहते हैं, लेकिन आप item.js से एक फ़ंक्शन निर्यात करके करीब आने में सक्षम हो सकते हैं:

// item.js
const express = require('express')
const router = express.Router()

...

module.exports = (app) => app.use('/item', router)

...और उसके बाद app को index.js में पास करना:

// index.js
const express = require('express')
const app = express()

require('./routes/item')(app)

आशा है कि ये आपकी मदद करेगा।

1
Steve Holgado 23 जिंदा 2019, 11:38

मॉड्यूल के भीतर मार्गों को संभालने के लिए मैं इस दृष्टिकोण का उपयोग करता हूं:

// Init Express
const express = require ( 'express' );
const app = express ();

// Create a router (I use this approach to create multiple routers)
const apiRouter = express.Router ({});

// Include the routes module
require ( './api/v1.0/routes/item' ) ( apiRouter );


// ./api/v1.0/routes/item
module.exports = router => {

    const itemController = require ( '../controllers/test' );

    // Define routes here
    router.post ( '/items', [
        itemController.doPost
    ] );
    router.get ( '/item/:id', [
        itemController.getItem
    ] );

};

मैं इस तरह एक अलग राउटर ऑब्जेक्ट बनाता हूं ताकि जरूरत पड़ने पर मैं कई राउटर बना सकूं .. (एक यूआई ऐप के लिए, एक एपीआई आदि के लिए)।

उम्मीद है ये मदद करेगा..

0
TheFoot 23 जिंदा 2019, 11:32