web-dev-qa-db-fra.com

Mise en route: configuration de la base de données pour Node.js

Je suis nouveau sur node.js mais je suis ravi de l'essayer. J'utilise Express comme framework web et Jade comme moteur de template. Les deux étaient faciles à installer après ce tutoriel de Node Camp .

Cependant, le seul problème que je trouve est Je ne peux pas trouver un didacticiel simple pour obtenir une configuration de base de données . J'essaie de créer une application de chat de base (session de stockage et message).

Quelqu'un connaît-il un bon tutoriel?

Cet autre SO post parle de dbs à utiliser - mais comme c'est très différent du monde Django/MySQL dans lequel je suis, je veux m'assurer de comprendre ce qui se passe.

Merci!

82
Emile

Je suppose que vous avez npm installé correctement en utilisant l'un de ces extraits (j'ai utilisé celui du haut).

Redis

J'utiliserais redis comme base de données. D'une part, c'est vraiment rapide , persistant. Vous devez l'installer, mais c'est vraiment facile.

make

Redis-cli

Ensuite, vous devez jouer avec redis vous-même. Je vous conseillerais de regarder cet excellent tutoriel par Simon Willison . Lui et moi vous conseillons également de jouer avec le redis-cli pour avoir une idée de la base de données.

Client Redis

Enfin, vous devez installer un client redis. Je vous conseillerais d'utiliser mranney's node_redis car je pense que c'est le client le plus rapide et le plus activement développé.

Installation

npm install hiredis redis

Exemple simple, inclus comme 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();
});

Stockage des sessions dans la base de données

L'auteur de express a également créé une bibliothèque pour gérer vos sessions en utilisant redis.

Installation:

npm install connect-redis

Exemple:

var connect = require('connect')
      , RedisStore = require('connect-redis');

connect.createServer(
  connect.cookieDecoder(),
  // 5 minutes
  connect.session({ store: new RedisStore({ maxAge: 300000 }) })
);

Stockage des messages dans la base de données

Je pense que j'utiliserais un ensemble trié pour cela. Stockez les messages à l'aide de ZADD et récupérez-les à l'aide de ZRANK, ZRANGEBYSCORE.

Socket.io

Enfin, si vous essayez de créer un chat simple, je vous conseille de jeter un œil à socket.io.

socket.io vise à rendre les applications en temps réel possibles dans chaque navigateur et appareil mobile, en brouillant les différences entre les différents mécanismes de transport.

J'ai également créé un chat en utilisant socket.io que j'ai posté sur stackoverflow . L'ajout de persistance + authentification devrait être un jeu d'enfant.

89
Alfred

Authentification express à l'aide de Redis pour le magasin de sessions et de Couchdb pour la base de données à l'aide de coffeescript.

Vérifiez ce Gist: https://Gist.github.com/652819

J'utilise ce modèle pour la plupart de mes projets. Vous pouvez également implémenter une version mongodb similaire à l'aide de:

node-mongodb-native par christkv: https://github.com/christkv/node-mongodb-native , ou

mangouste: https://github.com/learnboost/mongoose , ou

les mongous d'amark: https://github.com/amark/mongous

4
Shripad Krishna

En plus du tutoriel NodeCamp que vous mentionnez, il existe un autre NodeCamp tutorial donné par Matt Ranney, l'auteur susmentionné de la bibliothèque de nœuds redis. Cela va un peu plus en profondeur.

3
Cranberry Headache

Je sais que c'est un vieux post, mais au cas où quelqu'un d'autre tomberait dessus, j'ai créé un tutoriel utilisant la plupart des composants de l'OP, en particulier la connexion à la base de données. Il a une certaine complexité supplémentaire avec l'utilisation de Backbone.js, mais c'est très amusant!

http://fzysqr.com/2011/02/28/nodechat-js-using-node-js-backbone-js-socket-io-and-redis-to-make-a-real-time- chat-app /

2
jslatts