aboutsummaryrefslogtreecommitdiff
path: root/node_modules/mongo-factory/index.js
diff options
context:
space:
mode:
authorWaref Haque <warefhaque@Warefs-MacBook-Pro.local>2016-07-17 20:24:49 +0000
committerWaref Haque <warefhaque@Warefs-MacBook-Pro.local>2016-07-17 20:24:49 +0000
commite58943c3e620f05937656fdde032254ae3373f36 (patch)
tree77072aa55efa1753c8c8ae584669cf3589551268 /node_modules/mongo-factory/index.js
parent55098c767afb0b119aaeda330eaedba5c1a87dc3 (diff)
redirect commit
Diffstat (limited to 'node_modules/mongo-factory/index.js')
-rw-r--r--node_modules/mongo-factory/index.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/node_modules/mongo-factory/index.js b/node_modules/mongo-factory/index.js
new file mode 100644
index 0000000..085c25c
--- /dev/null
+++ b/node_modules/mongo-factory/index.js
@@ -0,0 +1,68 @@
+/**
+ * Creates and manages the Mongo connection pool
+ *
+ * @type {exports}
+ */
+var Promise = require('es6-promise').Promise;
+var mongo = require('mongodb');
+var MongoClient = mongo.MongoClient;
+var _ = require('underscore');
+
+// Store all instantiated connections.
+var connections = [];
+
+module.exports = function() {
+
+ return {
+
+ /**
+ * Gets a Mongo connection from the pool.
+ *
+ * If the connection pool has not been instantiated yet, it is first
+ * instantiated and a connection is returned.
+ *
+ * @returns {Promise|Db} - A promise object that resolves to a Mongo db object.
+ */
+ getConnection: function getConnection(connectionString) {
+ return new Promise(function(resolve, reject) {
+ // If connectionString is null or undefined, return an error.
+ if (_.isEmpty(connectionString)) {
+ return reject('getConnection must be called with a mongo connection string');
+ }
+
+ // Check if a connection already exists for the provided connectionString.
+ var pool = _.findWhere(connections, { connectionString: connectionString });
+
+ // If a connection pool was found, resolve the promise with it.
+ if (pool) {
+ return resolve(pool.db);
+ }
+
+ // If the connection pool has not been instantiated,
+ // instantiate it and return the connection.
+ MongoClient.connect(connectionString, function(err, database) {
+ if (err) {
+ return reject(err);
+ }
+
+ // Store the connection in the connections array.
+ connections.push({
+ connectionString: connectionString,
+ db: database
+ });
+
+ return resolve(database);
+ });
+ });
+ },
+
+ /**
+ * Exposes Mongo ObjectID function.
+ *
+ * @returns {Function} - Mongo ObjectID function
+ */
+ ObjectID: function() {
+ return mongo.ObjectID();
+ }
+ };
+}();