読者です 読者をやめる 読者になる 読者になる

コンパイラかく語りき

文系新卒プログラマーのメモ

【JSer向け】ローカルで生のRethinkDBを触る

RethinkDBについて。

 

 

以前Qiitaにこんな記事を投稿しました。

 

qiita.com

 

この頃は、RethinkDBもHorizonも初めてでよくわからないままつかっていました。

今あらためて、RethinkDBだけを触ってみよう!という記事です。

 

内容的にはこちらの記事と同じになりそうです。

 

qiita.com

 

ただ↑の記事ではPythonを使っておりまして、この記事ではJavaScriptを使います。

 

RethinkDBのインストールはこちら。

 

https://rethinkdb.com/docs/install/

 

JavaScript用のRethinkDBドライバがこちらです。

 

https://rethinkdb.com/docs/install-drivers/javascript/

 

そのまま起動

まずはそのまま起動します。「そのまま」とは、以下のコマンドを打ってみます。

 

$ rethinkdb

 

するとこのとおり。ローカルサーバがポート8080番で立ち上がりました。

f:id:chuck0523:20160831005144p:plain

 

ローカルのAdmin画面(http://localhost:8080)にアクセスします。

f:id:chuck0523:20160831005529p:plain

 

まずは、テーブルを見てみます。(http://localhost:8080/#tables)

デフォルトではtestというデータベースがありますね。ここに適当にテーブルを作成します。

 

f:id:chuck0523:20160831005849p:plain

salesという名前のテーブルを作成しました。

 

次にデータエクスプローラーという画面(http://localhost:8080/#dataexplorer)があるので、そちらからデータを登録してみます。

 

 

こちらが書いたクエリ。

 

f:id:chuck0523:20160831010636p:plain

 

実行してみると、

 

f:id:chuck0523:20160831010655p:plain

 

登録できたっぽいですね。countを実行して、チェックします。

 

f:id:chuck0523:20160831010735p:plain

ちゃんと反映されてますね!

GUIからでも充分ストレスなく操作できそうですね。

 

nodeから起動

次は、nodeを書いてコンソールで実行してみます。

参考にするのはこちらのページです。→ https://www.rethinkdb.com/docs/install-drivers/javascript/

 

書いたコードがこちら。

 

gist.github.com

 

rethinkdbドライバをrequireして、connectメソッドやdbメソッド、tableメソッドなどを実行しています。

走らせてみましょう。

 

$ node server.js

 

(ちなみに、ここで1時間ハマりました。ハマった原因は記事の最後に書きます笑)

 

すると、コンソールで特に表示はなく、エラーが出なかったことがわかります。

 

では、もう1度Admin画面を起動して、テーブルを確認してみます。

 

f:id:chuck0523:20160831021849p:plain

 

ちゃんとNodeで書いたtv_showsテーブルが追加されてますね!

以上で、生のRethinkDBを触るのはおしまいです。また、Horizon経由で操作してみたり、今度はRethinkDBをどこかにホスティング?してみたりしようと思います。

 

(おまけ)ドライバが起動せずにハマった

先ほどのハマった件。結論から言うと、RethinkDB自体が起動しておらず、ドライバが読みに行けて(?)いませんでした…。

 

エラー内容:ReqlDriverError: Could not connect to localhost:28015.

 

RethinkDBのエラーについては、こちらに一覧があります。

 

https://www.rethinkdb.com/docs/error-types/

 

その中でも、ReqlDriverErrorは「もはやドライバのバグっぽいよ」と書いており、絶望しました…。

で、調べているうちにこんな記事が。

 

ameblo.jp

 

この方は、MySQLが起動していなかったので、起動したらアプリケーションが動いたとのこと。

そこで、「そっか、RethinkDBだってDBなんだし、ひょっとしてこれが動いてなくちゃ、ドライバだって機能しないかも?」との気付きが。

 

コンソールをもう1タブ開いて、RethinkDBを起動します。

 

$ rethinkdb

 

f:id:chuck0523:20160831022502p:plain

 

RethinkDBが起動します。ってか、よく見たら、Listening for client driver connections on port 28015と書いてありますね…涙

ドライバを使うには、DBが起動していてポートをリッスンしている必要があるんですね…。サーバサイドの知識が浅いので、こういう当たり前っぽいことにガッツリ引っかかってしまいました…。