1

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"}
4

2 に答える 2

1

通常、数時間かけて質問を投稿し、解決策を見つけました。

これから- 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"
}
于 2012-07-31T20:31:17.290 に答える
1

次のコードのように、Update Handler 関数が Request オブジェクトを返すようにすると役立ちます。

(...)
return [doc, JSON.stringify(req)]
(...)

Request オブジェクトに含まれるプロパティを理解/特定するためにそれを行いました (これは Request オブジェクトのドキュメントです: http://docs.couchdb.org/en/latest/json-structure.html#request-object )

于 2013-12-24T07:22:36.857 に答える