Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting-started: Setup Database for Node.js

I am new to node.js but am excited to try it out. I am using Express as a web framework, and Jade as a template engine. Both were easy to get setup following this tutorial from Node Camp.

However the one problem I am finding is I can't find a simple tutorial for getting a DB set up. I am trying to build a basic chat application (store session and message).

Does anyone know of a good tutorial?

This other SO post talks about dbs to use- but as this is very different from the Django/MySQL world I've been in, I want to make sure I understand what is going on.

Thanks!

like image 479
Emile Avatar asked Dec 27 '10 23:12

Emile


People also ask

What database should I use with node js?

“Node. js can only be used with MongoDB (which is the most popular NoSQL database).”

Can we use node JS for database?

Node. js typically supports all database types, regardless of whether they're SQL or NoSQL.


1 Answers

I assume you have npm installed the correct way using one of these snippets(I used the top one).

Redis

I would use redis as a database. For one it is really fast, persistent. You need to install it, but that is really easy.

make 

Redis-cli

Next you should play with redis yourself. I would advice you to look at this excellent tutorial by Simon Willison. He and I also advice you to just play with the redis-cli to get a feeling of the database.

Redis client

Finally you need to install a redis client. I would advise you to use mranney's node_redis because I think it is the fastest and most actively developed client.

Installation

npm install hiredis redis 

Simple example, included as example.js:

var redis = require("redis"),     client = redis.createClient();  client.on("error", function (err) {     console.log("Error " + err); });  client.set("string key", "string val", redis.print); client.hset("hash key", "hashtest 1", "some value", redis.print); client.hset(["hash key", "hashtest 2", "some other value"], redis.print); client.hkeys("hash key", function (err, replies) {     console.log(replies.length + " replies:");     replies.forEach(function (reply, i) {         console.log("    " + i + ": " + reply);     });     client.quit(); }); 

Storing sessions in database

Also the author of express has created a library to handle your sessions using redis.

Installation:

npm install connect-redis 

Example:

var connect = require('connect')       , RedisStore = require('connect-redis');  connect.createServer(   connect.cookieDecoder(),   // 5 minutes   connect.session({ store: new RedisStore({ maxAge: 300000 }) }) ); 

Storing messages in database

I think I would use a sorted set for this. Store the messages using ZADD and retrieve them using ZRANK, ZRANGEBYSCORE.

Socket.io

Finally if you are trying to create a simple chat I would advise you to have a look at socket.io.

socket.io aims to make realtime apps possible in every browser and mobile device, blurring the differences between the different transport mechanisms.

I also created a chat using socket.io which I posted on stackoverflow. Adding persistence + authentication should be a breeze.

like image 176
Alfred Avatar answered Oct 26 '22 19:10

Alfred