Couchdbの更新ハンドラーを介してフィールドを追加するにはどうすればよいですか?作成者(ユーザーがログインしていることを確認する検証機能があります)と、更新ハンドラーを介して新しいドキュメンターが作成されたときに追加されるIDを追加したいと思います。
著者名はreq.userCtx.Nameから取得され、送信したデータはreq.bodyにあり、req.uuidを_idとして使用しています。
"updates": {
"new": "function(doc,req) { var message = req.uuid; return [ { _id : req.uuid, "author" : req.userCtx.name, data : req.body}, message]}"
}
データはcurlPOST経由で送信されました
$ cat test.json
{"data" : {"name" : "myname","dob" : "myDOB"}}
これは、更新ハンドラーを介したデータの外観です。
{"_id":"a018fed749d64f5db754b39af803a88f","_rev":"1-939793c36d2bfe4de86f808fab056959","author":"admin","data":"{\"name\" : \"myname\",\"dob\" : \"myDOB\"}"}
(更新ハンドラーを介さずに)標準のPOSTを実行すると、次のようになります。
{"_id":"a018fed749d64f5db754b39af803b621","_rev":"1-e44f0471e1df1018439fee3681b49547","data":{"name":"myname","dob":"myDOB"}}
私は何を間違っているのですか?
編集
通常、数時間かけて質問を探して投稿したところ、解決策が見つかりました。
これは役に立ちました-http: //grokbase.com/t/couchdb/user/10cbesx3zz/how-should-i-handle-json-parsing-in-update-handler
{ "new": "function(doc,req) { var data = JSON.parse(req.body); data['_id'] = req.uuid;data.author = req.userCtx.name; message = req.uuid; return [ data, message]}" }
docにidとauthorが追加されました。
{"_id":"a018fed749d64f5db754b39af80406b7","_rev":"1-c486b02d6f320eb15e6115e71b3f02cc","data":{"name":"myname","dob":"myDOB"},"author":"admin"}