Admin Mongoose: Multiple DBs
2020-04-04 17:08:21

Task: Connect to multiple DBs (e.g. db1 and db2 ) from single node.js/express application.

In this example we assume that web server is defined in server.js file:

//server.js
const express = require('express');                                        
const app = express();                                                     
const bodyParser = require('body-parser');                                                                
const PORT = 4000;                                                                                   
                                             
//const mongoose = require('mongoose');                                    
//mongoose.set('useNewUrlParser',true);                                  
//mongoose.set('useUnifiedTopology',true);                                

                                      
const db1Routes = require('./db1_route.js');                                
const db2Routes = require('./db2_route.js');                                
                                                                          
                                                                          
//mongoose.Promise = global.Promise;                                      
//mongoose.connect('http://localhost:27017/db1', { useNewUrlParser: true }).then(            
//        () => {console.log('DB1 is connected') },                         
//        err => { console.log('Can not connect to DB1'+ err)}              
//);                                                                      
//mongoose.connect(http://localhost:27017/db1, { useNewUrlParser: true }).then(       
//      () => {console.log('DB2 is connected') },                      
//      err => { console.log('Can not connect to DB2'+ err)}           
//

app.use('/db1', db1Routes);
app.use('/db2', db2Routes);

app.listen(PORT, 'localhost', function(){ 
  console.log('Server is running on Port:',PORT);
}); 

To link every path to its own database we transfer mongoose part of the code to router files like this:

//db1_route.js
const express = require('express');
const devRoutes = express.Router();

const mongoose = require('mongoose');                                    
mongoose.set('useNewUrlParser',true);                                  
mongoose.set('useUnifiedTopology',true);

mongoose.Promise = global.Promise;                                      
mongoose.connect('http://localhost:27017/db1', { useNewUrlParser: true }).then(            
        () => {console.log('DB1 is connected') },                         
        err => { console.log('Can not connect to DB1'+ err)}              
);

..........................

module.exports = db1Routes;

Similar changes with replacement db1 with db2 one shold make in db2_route.js. Every DB is connected to corresponding schema. Now all requests to /db1 will be directed to db1 DB whereas in requests to /db2 will be used db2 DB.

Comments
    Add Comment
    Welcome!
    • Boot Linux from USB. part I

      Multiple boot using GRUB2 from live ISO files located on USB
      Read more ...

    • Boot Linux from USB. part II

      Multiple boot using SYSLINUX from live ISO files located on USB
      Read more ...

    • Tweet update.

      Added tweet on @lloadm
      Read

    Responsive image
        Ads:

     

     

     

        Sponsor links: