2012-07-31 56 views
1

人們如何通過Couchdb中的更新處理程序添加額外字段?我想添加作者(我有一個驗證函數來檢查用戶是否已登錄),並在通過更新處理程序創建新文檔時添加了id。通過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]}" 
} 

數據通過被送往捲曲POST

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

我在做什麼錯?


編輯

典型已經花了幾個小時尋找,然後張貼我找到解決辦法的qestions。

這幫助 - 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]}" } 

文檔目前已擁有ID和作者..

{"_id":"a018fed749d64f5db754b39af80406b7","_rev":"1-c486b02d6f320eb15e6115e71b3f02cc","data":{"name":"myname","dob":"myDOB"},"author":"admin"} 
+0

因爲我的新用戶需要8個小時才能回答你自己的問題,所以不要回答我的想法,我會編輯以防萬一我忘了回來。現在已經回答:-) – Adam 2012-07-31 20:34:41

回答

1

典型已經花了幾個小時尋找,然後張貼我找到解決辦法的qestions。

這從 - 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] 
    }" 
} 

文檔目前已擁有ID和作者..

{ "_id":"a018fed749d64f5db754b39af80406b7", 
    "_rev":"1-c486b02d6f320eb15e6115e71b3f02cc", 
    "data":{"name":"myname","dob":"myDOB"}, 
    "author":"admin" 
} 
相關問題