MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

node.js और एक्सप्रेस - वैश्विक मॉड्यूल और अनुप्रयोग संरचना के लिए सर्वोत्तम अभ्यास

मैंने यहां एक और तरीका अपनाया है। यह नहीं कह रहा कि यह सबसे अच्छा है, लेकिन मुझे समझाएं।

  1. प्रत्येक स्कीमा (और मॉडल) अपनी फ़ाइल (मॉड्यूल) में है
  2. किसी विशेष आरईएसटी संसाधन के लिए मार्गों का प्रत्येक समूह अपनी फ़ाइल (मॉड्यूल) में है
  3. प्रत्येक मार्ग मॉड्यूल बस require यह नेवला मॉडल की जरूरत है (केवल 1)
  4. मुख्य फ़ाइल (आवेदन प्रविष्टि बिंदु) बस require सभी रूट मॉड्यूल उन्हें पंजीकृत करने के लिए।
  5. मोंगो कनेक्शन रूट फ़ाइल में है और इसे पैरामीटर के रूप में पारित किया जाता है जिसकी आवश्यकता होती है।

मेरे ऐप रूट के अंतर्गत मेरे पास दो सबफ़ोल्डर हैं - routes और schemas

इस दृष्टिकोण के लाभ हैं:

  • आप स्कीमा केवल एक बार लिखते हैं।
  • आप आरईएसटी संसाधन (सीआरयूडी) प्रति 4-5 मार्गों के लिए रूट पंजीकरण के साथ अपनी मुख्य ऐप फ़ाइल को प्रदूषित नहीं करते हैं
  • आप DB कनेक्शन को केवल एक बार परिभाषित करते हैं

यहां बताया गया है कि एक विशेष स्कीमा फ़ाइल कैसी दिखती है:

फ़ाइल:/schemas/theaterSchema.js

module.exports = function(db) {
        return db.model('Theater', TheaterSchema());
}

function TheaterSchema () {
        var Schema = require('mongoose').Schema;

        return new Schema({
            title: { type: String, required: true },
            description: { type: String, required: true },
            address: { type: String, required: true },
            latitude: { type: Number, required: false },
            longitude: { type: Number, required: false },
            phone: { type: String, required: false }
    });
}

यहां बताया गया है कि किसी विशेष संसाधन के लिए मार्गों का संग्रह कैसा दिखता है:

फ़ाइल:/routes/theaters.js

module.exports = function (app, options) {

    var mongoose = options.mongoose;
    var Schema = options.mongoose.Schema;
    var db = options.db;

    var TheaterModel = require('../schemas/theaterSchema')(db);

    app.get('/api/theaters', function (req, res) {
            var qSkip = req.query.skip;
            var qTake = req.query.take;
            var qSort = req.query.sort;
            var qFilter = req.query.filter;
            return TheaterModel.find().sort(qSort).skip(qSkip).limit(qTake)
            .exec(function (err, theaters) {
                    // more code
            });
    });

    app.post('/api/theaters', function (req, res) {
      var theater;

      theater.save(function (err) {
        // more code
      });
      return res.send(theater);
    });

    app.get('/api/theaters/:id', function (req, res) {
      return TheaterModel.findById(req.params.id, function (err, theater) {
        // more code
      });
    });

    app.put('/api/theaters/:id', function (req, res) {
      return TheaterModel.findById(req.params.id, function (err, theater) {
        // more code
      });
    });

    app.delete('/api/theaters/:id', function (req, res) {
      return TheaterModel.findById(req.params.id, function (err, theater) {
        return theater.remove(function (err) {
          // more code
        });
      });
    });
};

और यहाँ रूट एप्लिकेशन फ़ाइल है, जिसने कनेक्शन को इनिशियलाइज़ किया और सभी मार्गों को पंजीकृत किया:

फ़ाइल:app.js

var application_root = __dirname,
        express = require('express'),
        path = require('path'),
        mongoose = require('mongoose'),
        http = require('http');

var app = express();

var dbProduction = mongoose.createConnection('mongodb://here_insert_the_mongo_connection_string');

app.configure(function () {
        app.use(express.bodyParser());
        app.use(express.methodOverride());
        app.use(app.router);
        app.use(express.static(path.join(application_root, "public")));
        app.use('/images/tmb', express.static(path.join(application_root, "images/tmb")));
        app.use('/images/plays', express.static(path.join(application_root, "images/plays")));
        app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.get('/api', function (req, res) {
        res.send('API is running');
});

var theatersApi = require('./routes/theaters')(app, { 'mongoose': mongoose, 'db': dbProduction });
// more code

app.listen(4242);

आशा है कि यह मददगार था।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoexport में निर्यात किए गए MongoDB दस्तावेज़ों को कैसे सुंदर बनाएं?

  2. स्वचालित डेटाबेस स्वास्थ्य जांच

  3. MongoDb में, आप किसी सरणी तत्व को उसकी अनुक्रमणिका द्वारा कैसे हटाते हैं?

  4. उल्का मोंगो अद्यतन नेस्टेड सरणी

  5. MongoDB और Robomongo:कनेक्ट नहीं हो सकता (प्रमाणीकरण)