When is it advised to close a mongodb connection in a nodejs express application?





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







1















I m trying to make the most effective way of writing a mongodb connection setup for an express based node js app.



I have made a class that takes care of connection set up as follows:



class queryToDB {
async makeDBCall(queryHandler) {
let resultSet;
await MongoClient.connect(config.mongodburl, (err, client) => {
if(err) throw Error("Database connection cannot be established.");
resultSet = queryHandler(client.db("dbname"));
client.close();
});

return resultSet
}
};


export default new queryToDB();


After each query, I m closing the connection to the MongoClient. Is it the advised way to do it ?



Secondly, I m passing the connection to a callback as queryHandler. The queryHandler function would look something like this:



export const getCall = (id, handler) => {
return connection => {
connection.collection('some_schema').findOne({"_id": getObjectId(id)}, (err, result) => {
if(err) throw new Error(err);
handler(result);
});
}
};


I m passing the result back to the handler which in turn is passed back to the client from the server. Is this an effective way of creating connections and handling results ? So far I haven't done any kind of load testing on this but want to be sure if there is any issue with this approach of handling of queries and result to mongodb. I m also aware that I m using a couple of callbacks to achieve this, which is why I want to know more about the performance of this approach. I don't want to use Mongoose for this work. I m looking for just implementing this with MongoClient.
Any kind of feedback is appreciated. Thanks.










share|improve this question


















  • 1





    You absolutely do not want to be opening and closing MongoClient each request. See stackoverflow.com/questions/14495975/…

    – JohnnyHK
    Nov 27 '18 at 1:57


















1















I m trying to make the most effective way of writing a mongodb connection setup for an express based node js app.



I have made a class that takes care of connection set up as follows:



class queryToDB {
async makeDBCall(queryHandler) {
let resultSet;
await MongoClient.connect(config.mongodburl, (err, client) => {
if(err) throw Error("Database connection cannot be established.");
resultSet = queryHandler(client.db("dbname"));
client.close();
});

return resultSet
}
};


export default new queryToDB();


After each query, I m closing the connection to the MongoClient. Is it the advised way to do it ?



Secondly, I m passing the connection to a callback as queryHandler. The queryHandler function would look something like this:



export const getCall = (id, handler) => {
return connection => {
connection.collection('some_schema').findOne({"_id": getObjectId(id)}, (err, result) => {
if(err) throw new Error(err);
handler(result);
});
}
};


I m passing the result back to the handler which in turn is passed back to the client from the server. Is this an effective way of creating connections and handling results ? So far I haven't done any kind of load testing on this but want to be sure if there is any issue with this approach of handling of queries and result to mongodb. I m also aware that I m using a couple of callbacks to achieve this, which is why I want to know more about the performance of this approach. I don't want to use Mongoose for this work. I m looking for just implementing this with MongoClient.
Any kind of feedback is appreciated. Thanks.










share|improve this question


















  • 1





    You absolutely do not want to be opening and closing MongoClient each request. See stackoverflow.com/questions/14495975/…

    – JohnnyHK
    Nov 27 '18 at 1:57














1












1








1


0






I m trying to make the most effective way of writing a mongodb connection setup for an express based node js app.



I have made a class that takes care of connection set up as follows:



class queryToDB {
async makeDBCall(queryHandler) {
let resultSet;
await MongoClient.connect(config.mongodburl, (err, client) => {
if(err) throw Error("Database connection cannot be established.");
resultSet = queryHandler(client.db("dbname"));
client.close();
});

return resultSet
}
};


export default new queryToDB();


After each query, I m closing the connection to the MongoClient. Is it the advised way to do it ?



Secondly, I m passing the connection to a callback as queryHandler. The queryHandler function would look something like this:



export const getCall = (id, handler) => {
return connection => {
connection.collection('some_schema').findOne({"_id": getObjectId(id)}, (err, result) => {
if(err) throw new Error(err);
handler(result);
});
}
};


I m passing the result back to the handler which in turn is passed back to the client from the server. Is this an effective way of creating connections and handling results ? So far I haven't done any kind of load testing on this but want to be sure if there is any issue with this approach of handling of queries and result to mongodb. I m also aware that I m using a couple of callbacks to achieve this, which is why I want to know more about the performance of this approach. I don't want to use Mongoose for this work. I m looking for just implementing this with MongoClient.
Any kind of feedback is appreciated. Thanks.










share|improve this question














I m trying to make the most effective way of writing a mongodb connection setup for an express based node js app.



I have made a class that takes care of connection set up as follows:



class queryToDB {
async makeDBCall(queryHandler) {
let resultSet;
await MongoClient.connect(config.mongodburl, (err, client) => {
if(err) throw Error("Database connection cannot be established.");
resultSet = queryHandler(client.db("dbname"));
client.close();
});

return resultSet
}
};


export default new queryToDB();


After each query, I m closing the connection to the MongoClient. Is it the advised way to do it ?



Secondly, I m passing the connection to a callback as queryHandler. The queryHandler function would look something like this:



export const getCall = (id, handler) => {
return connection => {
connection.collection('some_schema').findOne({"_id": getObjectId(id)}, (err, result) => {
if(err) throw new Error(err);
handler(result);
});
}
};


I m passing the result back to the handler which in turn is passed back to the client from the server. Is this an effective way of creating connections and handling results ? So far I haven't done any kind of load testing on this but want to be sure if there is any issue with this approach of handling of queries and result to mongodb. I m also aware that I m using a couple of callbacks to achieve this, which is why I want to know more about the performance of this approach. I don't want to use Mongoose for this work. I m looking for just implementing this with MongoClient.
Any kind of feedback is appreciated. Thanks.







node.js mongodb express






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 27 '18 at 1:12









Pranay TripathiPranay Tripathi

556513




556513








  • 1





    You absolutely do not want to be opening and closing MongoClient each request. See stackoverflow.com/questions/14495975/…

    – JohnnyHK
    Nov 27 '18 at 1:57














  • 1





    You absolutely do not want to be opening and closing MongoClient each request. See stackoverflow.com/questions/14495975/…

    – JohnnyHK
    Nov 27 '18 at 1:57








1




1





You absolutely do not want to be opening and closing MongoClient each request. See stackoverflow.com/questions/14495975/…

– JohnnyHK
Nov 27 '18 at 1:57





You absolutely do not want to be opening and closing MongoClient each request. See stackoverflow.com/questions/14495975/…

– JohnnyHK
Nov 27 '18 at 1:57












0






active

oldest

votes












Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53491398%2fwhen-is-it-advised-to-close-a-mongodb-connection-in-a-nodejs-express-application%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53491398%2fwhen-is-it-advised-to-close-a-mongodb-connection-in-a-nodejs-express-application%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Tonle Sap (See)

I get strange results when I access the Sqlitedatabase with Unity C# via XAMPP

Guatemaltekische Davis-Cup-Mannschaft