こんにちは。
胃弱体質なりょうのすけです。(今これ書いてるときすごく痛い)
ひきつづき、CouchDB に浮気中。
インストールしただけの前回。
今回は使ってみますよ。
簡単です、それはもう簡単すぎて泣ける。
↓ここを参考に
http://guide.couchdb.org/editions/1/en/api.html
サーバーの確認
CouchDB が問題なく実行されているか確認。
ターミナルから cURL で送信する。
CouchDB のデフォルトのアドレスは 127.0.0.1:5984
(couch.ini で設定を変更できる)
{"couchdb":"Welcome","version":"1.1.0"}
使用しているバージョンが表示されるよ。
りょうのすけは 1.1.0 ですね。
ウワサによると1.0.3と1.1.0にはバグがあるっぽい。
現時点(9/30)ではあくまでもウワサなので詳細がわかれば何か書きます。
CouchDB を操作するには HTTPメソッドを使用する。
PUT GET POST DELETE など。
データベースの作成
とりあえず作ってみよう。
なんとなくブックマークを保存するデータベースにしてみる。
ターミナルから『bookmarks』データベースを作成。
{"ok":true}
ちなみに -v オプションをつけると応答の詳細を表示しつつ実行される。
* About to connect() to 127.0.0.1 port 5984 (#0)
* Trying 127.0.0.1... connected
> PUT /bookmarks HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-apple-darwin10.8.0) libcurl/7.22.0 OpenSSL/1.0.0e zlib/1.2.5 libidn/1.22
> Host: 127.0.0.1:5984
> Accept: */*
>
< HTTP/1.1 201 Created
< Server: CouchDB/1.1.0 (Erlang OTP/R14B03)
< Location: http://127.0.0.1:5984/bookmarks
< Date: Thu, 29 Sep 2011 20:33:28 GMT
< Content-Type: text/plain;charset=utf-8
< Content-Length: 12
< Cache-Control: must-revalidate
<
{"ok":true}
* Connection #0 to host 127.0.0.1 left intact
* Closing connection #0
削除する場合は DELETE メソッドを使用。
* About to connect() to 127.0.0.1 port 5984 (#0)
* Trying 127.0.0.1... connected
> DELETE /bookmarks HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-apple-darwin10.8.0) libcurl/7.22.0 OpenSSL/1.0.0e zlib/1.2.5 libidn/1.22
> Host: 127.0.0.1:5984
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: CouchDB/1.1.0 (Erlang OTP/R14B03)
< Date: Thu, 29 Sep 2011 20:35:53 GMT
< Content-Type: text/plain;charset=utf-8
< Content-Length: 12
< Cache-Control: must-revalidate
<
{"ok":true}
* Connection #0 to host 127.0.0.1 left intact
* Closing connection #0
ドキュメントの操作
ドキュメントの挿入
ドキュメントを挿入するには PUT メソッドを使用する。
なので
{"ok":true,"id":"6e1295ed6c29495e54cc05947f18c8af","rev":"1-475397faa2309472586554ace8851916"}
※ここで注意
CouchDB には MySQL のようにオート・インクリメント機能はないので ID は自分で指定することになる。
ID には任意の文字列が指定できるけど UUID(もしくは GUID)を使用するのが妥当。
ちなみに CouchDB は UUID の生成を手助けしてくれる。
↓これを入力
↓返ってくる
親切。
ドキュメントの取得
保存したドキュメントを取得するには GET メソッドを使用する。
なので
{"_id":"6e1295ed6c29495e54cc05947f18c8af","_rev":"1-475397faa2309472586554ace8851916","title":"rnsklabs","url":"http://rnsk.net","comment":"u308au3087u3046u306eu3059u3051u306eu7814u7a76u5ba4"}
保存の際のドキュメント以外に『_rev』という項目が追加されている。
勝手に!?(違
これはリビジョンを表してるもので、保存後のドキュメント操作に使用します。
ドキュメントを更新する
更新も PUT メソッドを使用します。
↑これだと↓エラー
リビジョンを指定して更新する
↑これなら↓OK
これが普段 RDB で使ってるIDの役目になるのかな?という感じ。
ファイルを添付する
CouchDBでは、1つのドキュメントに複数の添付ファイルをひも付けして管理することができます。
画像ファイルやテキストファイル、圧縮ファイルなどなど。
ファイルを添付するときも PUT メソッドを使用。
すでに保存しているドキュメントに添付します。
@ のあとのファイル名は添付したいファイルのパスを書きます。
Mac のデスクトップにあるなら
@/Users/ユーザー名/Desktop/screenshot.jpg
ドキュメントの削除
ドキュメントの削除には DELETE メソッドを使用する。
このときも更新と同じようにリビジョンを指定しないとエラーになる
↑こうだと↓エラー
↑これなら↓OK
おわりに
ドキュメント操作はとりあえずこんな感じ。
わざわざ cURL を使わなくても Futon 使ったらもっとラクラクですよね。
次回は Futon 使ってドキュメント操作してみようかな。