【问题标题】:Adding id and author fields via a update handler in Couchdb通过 Couchdb 中的更新处理程序添加 id 和 author 字段
【发布时间】:2012-07-31 12:11:01
【问题描述】:

人们如何通过 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]}"
}

通过 curl 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"}}

我做错了什么?


编辑

通常会花几个小时寻找然后发布问题,我找到了解决方案。

这有帮助 - 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"}

【问题讨论】:

  • 作为我的新用户,我需要 8 小时才能回答您自己的问题,所以我不会从不回答,而是认为我会编辑以防我忘记回来。现在已经回答了:-)

标签: javascript couchdb couchapp


【解决方案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"
}

【讨论】:

    【解决方案2】:

    它可以帮助你让你的更新处理函数返回你的请求对象,如下代码:

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

    我这样做是为了了解/识别 Request 对象中的属性(这里是 Request 对象文档:http://docs.couchdb.org/en/latest/json-structure.html#request-object

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      相关资源
      最近更新 更多