Monday 12 June 2017

How do I maintain multi tenant data base connections nodejs

Let's say I have a service app.js. Whenever a new client connects to the service , we will check if a mongodb connection is already establish for this client or not.

If it is not available then we will fetch the server ip, dbname ,collection name from a configuration file, connect to the db,and reply to the user.

Note: we can add a new client and corresponding info to Client Info at any time. (dynamically)

Client Info ClientId: ServerIp : Database Name :Collection Name I have tried to store mongo object in array so I can reuse them object based on database name from user's session data. But I keep running into circular json error. How do I store multi tenant database connections?

async.eachSeries(conf.clientDbs.clientsList, function(clientDetails,callback){
    console.log(clientDetails);
   mongodb.MongoClient.connect(conf.clientDbs.connection+clientDetails.dbName, function (err, database) {
        if (err) {
        console.log(err);
        process.exit(1);
        }
        // Save database object from the callback for reuse.
        var tempdbobj = {};
        tempdbobj["obj"] = database
        allDbs[clientDetails.team_id] = tempdbobj;
        console.log("Database connection ready for "+clientDetails.team_id);
        allDbs[clientDetails.team_id].obj.collection('collection_name').find({"ref_id":"111"}, function(dberr, testDoc){
            if (dberr) {
                console.log(dberr);
                callback();
            }
            else {
                console.log(testDoc);
                callback();
            }

        });
    });
});



via Aakash Kag

No comments:

Post a Comment