1. ホーム
  2. javascript

[解決済み] はじめに Node.jsのデータベースのセットアップ

2023-07-01 23:23:06

質問

私はnode.jsの初心者ですが、試してみるのが楽しみです。私は使用しています エクスプレス をWebフレームワークとして使用しており ジェイド をテンプレートエンジンとして使用しました。どちらも、次のように簡単にセットアップすることができました。 このチュートリアル から ノードキャンプ .

しかし、私が発見した1つの問題は DBをセットアップするための簡単なチュートリアルを見つけることができません。 . 私は基本的なチャットアプリケーションを構築しようとしています(セッションとメッセージを保存する)。

誰もが良いチュートリアルを知っていますか?

この他の SOポスト は使用するデータベースについて述べていますが、これは私が今までいた Django/MySQL の世界とは非常に異なるので、何が起こっているのか理解することを確認したいと思います。

ありがとうございます!

どのように解決するのですか?

私は、あなたが npm のいずれかを使って正しい方法でインストールされていると仮定します。 スニペット (のいずれかを使用して正しい方法でインストールします(私は一番上のものを使用しました)。

Redis

私はデータベースとしてredisを使用します。ひとつは、本当に 速い で、永続的です。インストールする必要がありますが、それは本当に簡単です。

make

Redis-cli

次に、redisを自分で動かしてみましょう。この素晴らしいチュートリアルを見ることをお勧めします。 サイモン・ウィリソン . 彼と私はまた、単に redis-cli で遊んでみて、データベースの感覚をつかんでください。

Redisクライアント

最後にredisクライアントをインストールする必要があります。私は、mranneyの ノード_redis を使うことをお勧めします。これは最も速く、最も活発に開発されているクライアントだと思うからです。

インストール

npm install hiredis redis

簡単な例です。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();
});

データベースへのセッションの保存

また、expressの作者は、あなたの セッション をredisを使って処理するライブラリも作成しました。

インストールします。

npm install connect-redis

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

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

メッセージのデータベースへの保存

を使うことになると思います。 ソートされたセット を使います。メッセージの保存には ZADD を使って保存し ZRANK , ZRANGEBYSCORE .

ソケット.io

最後に、もしあなたが簡単なチャットを作ろうとしているのなら、socket.ioを見ることをお勧めします。

socket.ioはリアルタイムアプリを作ることを目的としています。 を実現することを目指しています。 リアルタイムアプリケーションを実現することを目指しています。 異なるトランスポート機構間の を実現することです。

また、socket.ioを使ったチャットを作成し、それを スタックオーバーフロー . 永続化と認証を追加するのは簡単でしょう。