Node.js et MongoDB, la réutilisation de la DB objet
Je suis nouveau à la fois Node.js et MongoDB, mais j'ai réussi à mettre quelques pièces de soi et de la documentation de mongo.
Mongo documentetion donne l'exemple:
//Retrieve
var MongoClient = require('mongodb').MongoClient;
//Connect to the db
MongoClient.connect("mongodb://localhost:27017/exampleDb", function(err, db) {
if(!err) {
console.log("We are connected");
}
});
Qui a l'air bien si j'ai seulement besoin d'utiliser la DB dans une fonction à un seul endroit. La recherche et la lecture sur DONC, m'a montré que je ne devrais pas ouvrir une nouvelle connexion à chaque fois, mais plutôt l'utilisation d'une piscine et de la réutilisation de la base de données objet-je obtenir la première fois. Cette réponse est abondante sur, mais je ne suis pas sûr de la façon d'obtenir la DB objet, en premier lieu, et ensuite comment la réutiliser.
Dire que j'ai l'Node.js le code ci-dessus dans mon App.js et j'ai ensuite divers itinéraires qui en ont besoin pour exécuter différentes opérations sur la db comme:
app.post('/employee', function(req, res){
//Put req.name in database
});
app.post('/car', function(req, res){
//Put req.car in database
});
Comment m'y prendre pour mettre ces deux extraits ensemble dans quelque chose d'utile?
J'ai trouvé une question similaire dans Node.js la réutilisation MongoDB référence , mais des regards de cette ( http://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html ), il semble que je devrais utiliser MongoClient plutôt que de db(). Et je ne suis pas sûr que ça règle mon problème...
Vous devez vous connecter pour publier un commentaire.
Vous pouvez toujours écrire un module qui initialise vos connexions de base de données et les rend accessibles tout au long de votre programme. Par exemple:
mongo.js
app.js
randomFile.js
Je connais des gens parler de la mise en commun, mais quand j'ai fait l'analyse comparative de la mise en commun mongo connexions vs une connexion unique pour toutes les demandes, la seule connexion en fait de meilleurs résultats. D'accord, c'était il ya environ un an, mais je doute que le concept de base a changé. Toutes les demandes sont asynchrones, donc c'est pas comme si plusieurs connexions sont nécessaires afin d'effectuer des demandes simultanées.
Autant que MongoClient, je suppose que c'est la nouvelle syntaxe ils sont encourageants. De toute façon, il s'agit essentiellement d'une client objet que vous souhaitez conserver et de rendre accessibles quel que soit le style que vous utilisez.
init
fonction ne doit être appelée qu'une seule fois. LerandomFile.js
était juste un exemple pour montrer que vous pouvez utiliser la base de données initialisée à partir de n'importe où dans le code. Je pourrais être utilisé tout aussi facilement à l'intérieur de app.js. Vous avez certainement devraient comprendre la façon dont les modules de travail si vous allez travailler avec le noeud, mais ils ne sont vraiment pas difficile.mongo.myCollection = ...
. Je n'ai pas la moindre idée si cette réponse ne représente encore qu'une meilleure pratique. Je n'ai pas utilisé node.js dans une couple d'années, et c'est encore plus depuis que j'ai utilisé Mongo.À partir de votre dernier extrait de code, il semble que vous utilisez Express ou similaire cadre. Vous pouvez utiliser express-mongo db pour obtenir une connexion à l'intérieur
req
objet. Ce middleware cache de connexion pour vous et de les partager avec d'autres demandes entrantes: