カスタム検索

2009年12月14日月曜日

前回の続き

・データとURI
データには一意のURIが割り当てわれます。
http://127.0.0.1/${dbName}/${id}
このURIにたいしてRESTする事でDBの操作を行う事が出来ます。

・データの作成
curl -X PUT http://127.0.0.1:5984/baseball/a89c8812a6f9e83f7b8e1848287de338 -d '{"name":"bar"}'
{"ok":true,"id":"a89c8812a6f9e83f7b8e1848287de338","rev":"1-62bc3c4d01e43ee9d0cead8cd7c76041"}

UUIDを指定してデータを入れるのですが、UUIDを作成する手段がない場合は、Couchから取得する事も出来ます。
curl -X GET http://127.0.0.1:5984/_uuids
{"uuids":["a89c8812a6f9e83f7b8e1848287de338"]}

・リビジョン
CouchDBでは、データが更新されると自動的に履歴が残ります。
_revというフィールドに設定される頭の数字がリビジョン番号になります。
先程のデータを更新してみます。
curl -X PUT http://127.0.0.1:5984/baseball/a89c8812a6f9e83f7b8e1848287de338 -d '{"name":"bar2nd"}'
{"error":"conflict","reason":"Document update conflict."}
おっと、エラーです。

更新する際は、対象のリビジョンを指定する必要があります。
curl -X PUT http://127.0.0.1:5984/baseball/a89c8812a6f9e83f7b8e1848287de338 -d '{"_rev":"1-62bc3c4d01e43ee9d0cead8cd7c76041","name":"bar2nd"}'
{"ok":true,"id":"a89c8812a6f9e83f7b8e1848287de338","rev":"2-e3faaaf677273de632db3e628147558e"}

revが2になりました。
Futonから確認するとわかりますが、すべてのリビジョンでの情報を保持しています。





古いリビジョン情報は、CompactDBや、Replicationしたタイミングで消去されるようです。
(残す方法はないのかな・・・)

長くなりそうなので一旦ここまで・・・

2 件のコメント:

Mikiya Okuno さんのコメント...

「前回」のリンクが間違ってるよ。

Ponytail.The.S さんのコメント...

おおっと、サンクス!