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