0

How would I set up a MongoDB database connection with node.js?

Here is my app.js file:

var express = require('express'),
    app = express(),
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);

server.listen(3000);

app.get('/', function(req, res) {
    res.sendfile(__dirname + '/index.htm');
});

app.use(express.static(__dirname + '/assets'));

io.sockets.on('connection', function(socket) {
    socket.on('send message', function(data) {
        io.sockets.emit('new message', data);
    });
});

I have already set-up MongoDB and have it running as a service on Windows.

2

1 Answer 1

6

As of 1.2, the recommended way to perform a connection is in documentation:

http://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html

excerpt:

var MongoClient = require('mongodb').MongoClient
  , Server = require('mongodb').Server;

var mongoClient = new MongoClient(new Server('localhost', 27017));
mongoClient.open(function(err, mongoClient) {
  var db1 = mongoClient.db("mydb");

  mongoClient.close();
});

You may find that a connection singleton is useful for the current state of the official node.js driver. Below is some sample code that I use:

connection.js module:

var MongoClient = require('mongodb').MongoClient;

var db_singleton = null;

var getConnection= function getConnection(callback)
{
    if (db_singleton)
    {
        callback(null,db_singleton);
    }
    else
    {
           //placeholder: modify this-should come from a configuration source
        var connURL = "mongodb://localhost:27017/test"; 
        MongoClient.connect(connURL,function(err,db){

            if(err)
                log("Error creating new connection "+err);
            else
            {
                db_singleton=db;    
                log("created new connection");

            }
            callback(err,db_singleton);
            return;
        });
    }
}

module.exports = getConnection;

Referencing module:

var getConnection = require('yourpath/connection.js')

function yourfunction()
{
    getConnection(function(err,db)
    {
        //your callback code

    }
.
.
.
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.