| 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! | |



