CouchDBのアップデートハンドラのキーって_updatesじゃ..?
CouchDBでドキュメントを更新する際、いちいちバージョン番号を渡して排他処理をするのがウザいと感じることが多々ある。つーか常に後勝ちな、緩い感じでいいじゃん、と。そんなあなた(私)のためにあるのが、こちら。デザインドキュメントによるアップデートハンドラ。デザインドキュメントにあらかじめドキュメント更新用の関数を定義しておいて、その関数経由であえてバージョン番号を無視する更新を行うワケです。
で、最近PCを買い換えたのもあり、せっかくだからと最新のCouchDB(1.3.0)を入れて、早速この便利なアップデートハンドラちゃんを登録しようとしたわけです。
Error: doc_validation Bad special document member: _updates OK
お、オウケイ…?って、全然OKじゃあねえ。どういうワケか"_updates"という名前でフィールドが作成できなくなっている。おかしい、現にiriscouchで動作しているオレのアプリは_updatesフィールドにガンガン更新メソッドを詰め込んでいる。_updatesがサポートされなくなった?まさか。どうせオレと同じ問題を抱えている奴がいるだろうとGoogleで、stackoverflowで検索してみるが全然同じような疑問が見当たらない。そして公式のWiki ( http://wiki.apache.org/couchdb/Document_Update_Handlers ) に以下の一文を見つけた。
You can specify any number of update handler functions in a design document, under the "updates" attribute.
"updates"? "_updates"ではないのか?実際にupdateでアップデートハンドラを登録し動作確認をしてみると、確かに動作する。(ただしアップデートハンドラへのリクエストは /
これは一体…。ま、まさか、過去改変、そしてオレはリーディングシュタイナーの能力に目覚めて…?!
とはいえ、iriscouchの方には"_updates"フィールドでアップデートハンドラを行っているアプリが今も動作しているし、まあ、何だかよくわからないがアップデートハンドラのフィールドは今は"updates"だっつーことで。