Erste Schritte: Richten Sie die Datenbank für Node.js ein


82

Ich bin neu bei node.js, freue mich aber darauf, es auszuprobieren. Ich verwende Express als Webframework und Jade als Template-Engine. Beide waren nach diesem Tutorial von Node Camp leicht einzurichten .

Das einzige Problem, das ich finde , ist, dass ich kein einfaches Tutorial zum Einrichten einer Datenbank finden kann . Ich versuche, eine grundlegende Chat-Anwendung zu erstellen (Sitzung und Nachricht speichern).

Kennt jemand ein gutes Tutorial?

In diesem anderen SO-Beitrag geht es um die Verwendung von DBS. Da sich dies jedoch stark von der Django / MySQL-Welt unterscheidet, in der ich mich befunden habe, möchte ich sicherstellen, dass ich verstehe, was los ist.

Vielen Dank!


Ich hasse es, derjenige zu sein, der dies sagt, aber ich denke, ein Framework ist ein schlechter Lehrer einer Programmiersprache.
Grantwparks

Antworten:


89

Ich gehe davon aus, dass Sie npm mit einem dieser Snippets richtig installiert haben (ich habe das oberste verwendet).

Redis

Ich würde Redis als Datenbank verwenden. Zum einen ist es sehr schnell , hartnäckig. Sie müssen es installieren, aber das ist wirklich einfach.

make

Redis-cli

Als nächstes solltest du selbst mit Redis spielen. Ich würde Ihnen raten, sich dieses hervorragende Tutorial von Simon Willison anzusehen . Er und ich raten Ihnen auch, einfach mit dem redis-clizu spielen , um ein Gefühl für die Datenbank zu bekommen.

Redis Client

Schließlich müssen Sie einen Redis-Client installieren. Ich würde Ihnen raten, mranneys node_redis zu verwenden, da ich denke, dass dies der schnellste und am aktivsten entwickelte Client ist.

Installation

npm install hiredis redis

Einfaches Beispiel, enthalten als 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();
});

Sitzungen in der Datenbank speichern

Außerdem hat der Autor von Express eine Bibliothek erstellt, um Ihre Sitzungen mit Redis zu verwalten.

Installation:

npm install connect-redis

Beispiel:

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

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

Speichern von Nachrichten in der Datenbank

Ich denke, ich würde dafür ein sortiertes Set verwenden . Speichern Sie die Nachrichten mit ZADDund rufen Sie sie mit ZRANK, ZRANGEBYSCORE.

Socket.io

Wenn Sie versuchen, einen einfachen Chat zu erstellen, würde ich Ihnen raten, sich socket.io anzuschauen.

socket.io zielt darauf ab, Echtzeit-Apps in jedem Browser und Mobilgerät zu ermöglichen und die Unterschiede zwischen den verschiedenen Transportmechanismen zu verwischen.

Ich habe auch einen Chat mit socket.io erstellt, den ich auf stackoverflow gepostet habe . Das Hinzufügen von Persistenz + Authentifizierung sollte ein Kinderspiel sein.


4

Express-Authentifizierung mit Redis für den Sitzungsspeicher und Couchdb für die Datenbank mit Coffeescript.

Überprüfen Sie dieses Wesentliche: https://gist.github.com/652819

Ich verwende diese Vorlage für die meisten meiner Projekte. Sie können eine ähnliche Mongodb-Version auch implementieren, indem Sie:

node-mongodb-native von christkv: https://github.com/christkv/node-mongodb-native oder

Mungo: https://github.com/learnboost/mongoose oder

Amarks Mongous: https://github.com/amark/mongous


3

Zusätzlich zu dem von Ihnen erwähnten NodeCamp-Tutorial gibt es ein weiteres NodeCamp- Tutorial, das von Matt Ranney, dem oben genannten Autor der Redis-Knotenbibliothek, gegeben wurde. Es geht ein bisschen tiefer.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.