[解決済み] はじめに Node.jsのデータベースのセットアップ
質問
私は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を使ったチャットを作成し、それを スタックオーバーフロー . 永続化と認証を追加するのは簡単でしょう。
関連
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Node.jsでファイルを書き込む
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] Javascriptで動的に命名されたメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] ExtJS 4のイベントハンドリングについて
-
[解決済み] なぜ "use strict "はパフォーマンスを10倍向上させるのか?
-
[解決済み] アサインの左側にJavascriptのオブジェクトブラケット表記({ ナビゲーション } =)があります。
-
[解決済み] コールバック地獄とは何か、RXはそれをどのように、そしてなぜ解決するのか?
-
[解決済み] イテレータでmap()を使用する
-
[解決済み] Promise : then vs then + catch [重複].
-
[解決済み] JavaScriptとLuaの微妙な違い [終了しました]
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
-
[解決済み] nodejsでredisのPUBLISH/SUBSCRIBEを使用して、データの値が変更されたときにクライアントに通知するにはどうすればよいですか?