Nodejs and MongoDB, A Beginner’s Approach
This is not a book and I didn’t try to sell a book to you.
The term “A Beginner’s Approach” reflects my self when finding a hard way out to connect Nodejs to MongoDB. There are lots of libraries available to use when connecting Nodejs to MongoDB. If you were trying to make your feet wet, and that’s what I’m doing until today, you probably want to try this approach. I can’t promise anything but at least, you will not get a headache.
First, read about Nodejs. After that, MongoDB. If you’re already familiar with it, skip it and install both on your system. There maybe vary depending on your system. If you use Mac and Homebrew (or MacPorts), you’re lucky. Just do this:
$ brew install node
to install Nodejs, and:
$ brew install mongodb
or
$ sudo port install mongodb
to install MongoDB.
Next, you should familiar on how Nodejs and MongoDB works. Playing a whole day is probably enough to grasp the idea if you are a Javascript-ers and you are familiar with web server programming. If you aren’t, you should have no problem learning them in a short time, probably a week or two, if you willing to.
Okay, here’s the fun part. Oh wait, we need to install one more additional driver to connect from Nodejs to MongoDB. I’ve picked node-mongodb-native by christkv and I recommend you to install it too. It’s easy.
$ npm install mongodb
Now we’re ready to go.
To prepare a connection to MongoDB, you can create variables that define the database and its server, like this one:
and then instantiate a database client:
'test'
is your database name. This is usually available from the first time you install MongoDB. The IP address is obvious. 27017
refers to the specific port of your database.
Next, you may want to define the action for insert, remove, update, and show the data. Here’s mine.
Now, the final step is to open the connection and do what you want with your already-defined action above.
You’ve noticed that there is a 'test_insert'
parameter. 'test_insert'
is your collection name (you can go with different name though). You can think a collection just like a table in SQL database, but without a relation (that’s why we often call it NoSQL because it has no relationship like SQL does).
These codes are far from perfect. I simplify it for the sake of, surprise surprise, simplicity and easy to understand. I uploaded the source code to my Github too. So if you want to try a little bit further, you can do whatever you like, based on my code, to explore more about Nodejs and MongoDB.
Any comments or questions are definitely welcome.
Update: I forgot to mention that for the sake of simplicity, I’m not including a callback following some operations above. Christkv, the author of the native driver I’ve used here, has give us a clue on his comment below so I just want to say that if you want (and ready) to know more about callback, please read here.
Nice tutorial but I think you have missed one thing here: the callback parameter. Every actions you mentioned above need a callback to handle the operation results. I expect for more article on this.
Anyway, this is a good start for a beginner to learn about node and mongodb.
You’re right but I think if I included the callback, it would confuse those who want to learn Nodejs from the scratch. I’ll follow this post if necessary.
Pingback: Octave and Gnuplot in Mac | Ksetyadi's [B]Log
Thanks so much for this!
try this module. Its excellent
npm install mongous
Did you mean
npm install mongoose
?There’s a good example with callbacks here
No, I’m quite sure he meant https://github.com/amark/mongous
Noted. Thanks.
Wow… that looks like a pretty useful find.
it’s good :). you only real the callback if you are using a “safe” insert as otherwise it’s not actually fetching the state of the operation.
so
collection.insert(doc, {safe:true}, function(err, result) {});
Well noted. I’ve updated the post so there’s a “caution” near the end of this post about callback to simplify things up. I should write a follow-up post then! Thanks a bunch, Chris!
>$ npm install mongodb
I would mention what npm is and how to get it, especially for a beginner’s how-to guide.
Yes Phil, I will mention about npm and how to install it in another post. Thanks for reminding me about defining it thoroughly.
Pingback: Cheatsheet: 2011 11.01 ~ 11.07 - gOODiDEA.NET
Pingback: async I/O News » Nodejs and MongoDB, A Beginner’s Approach
Nice work, keep on posting :)
I can’t get this code to work. Nothing is ever printed to the console. When the ‘client’ is initialized, should the values provided work or do I need to change it to my current IP address?
var Db = require(‘mongodb’).Db;
var Server = require(‘mongodb’).Server;
var client = new Db(‘test’, new Server(‘127.0.0.1’, 27017, {}));
var insertData = function(err, collection) {
console.log(“Inserting data”);
collection.insert({name: “Kristiono Setyadi”});
}
var listAllData = function(err, collection) {
collection.find().toArray(function(err, results) {
console.log(results);
});
}
Anyone know why this isn’t printing anything?
Nice post, dude! To me, as a beginner, you were explaining exactly what I need. After that, I just find the advance tutorial about this. Thanks!
Pingback: Welcome to 2012. Welcome New Resolutions. | Ksetyadi's [B]Log
Please change ‘client’ to ‘pClient’ in this snippet above:
client.open(function(err, pClient) {
client.collection(‘test_insert’, insertData);
client.collection(‘test_insert’, removeData);
// etc.
}
Thanks for your article
Why? I’ve been googling the difference between the initial client and the callback client, but cannot find information about the distinction.
Pingback: node.js » Agile Mobile Developer
thanks its good for me. but i am totally confuse on this :-{} at below line:-
var client = new Db(‘test’, new Server(‘127.0.0.1’, 27017, {});
but finally i know its a callback function.
I think you should mention this. (because nodejs basically based on callback function. I am new in this technology, may be i am wrong about nodejs. )
Nice post :) But, I am geeting a waring message “Failed to load c++ bson extension, using pure JS version”? Could you please help me to fix it out.
Did you fix it out? I face the same problem like you. How can I solve it,please.
Pingback: What is mongodb? | Sathya's Log
An awesome work in explaining how to connect mongodb and nodejs in simplest way.
I look forward for you on more blogs on nodejs.
Thanks a lot for this article! :)
LlistAllData returns null :(
when I printed the error message it return
{ [MongoError: Connection Closed By Application] name: ‘MongoError’ }
But update, Insert, remove works perfectly :)