前回の続き
・データと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 件のコメント:
「前回」のリンクが間違ってるよ。
おおっと、サンクス!
コメントを投稿