couchdb添加文档转换 - 使用更新功能

时间:2014-04-01 14:09:48

标签: couchdb

我有更新方法updates/add-date.js

function(oldDoc, req) {
    var newDoc = req.body;
    return [newDoc, toJSON({newDoc:newDoc,oldDoc:oldDoc})];
}

它被设置为设计文档。

"updates": {
       "add-date": "function(oldDoc, req) {\n    var newDoc = fromJSON(req.body);\n    return [newDoc, toJSON({newDoc:newDoc,oldDoc:oldDoc})];\n}"
},

我希望它是“无所事事”,当我使用它"/db/_design/xyz/_update/add-date/"+value._id执行put时,它应该将文档放在我们直接放置它,但是我在日志中没有得到任何更改:

PUT /q-couch-test/_design/couch-experiment/_update/add-removed-date/2601b8c4dad9648e8ddae3804f15e652 200

我希望状态为201而不是200,并且不会对文档进行任何更改。我做错了什么?

1 个答案:

答案 0 :(得分:0)

这对我有用

"add-date": "function(oldDoc, req) {\n    var newDoc = oldDoc;\n    return [newDoc,      toJSON({newDoc:newDoc,oldDoc:oldDoc})];\n}"

首先,当我尝试运行更新功能时,fromJson发出错误。它是内置的couchDB功能吗?当我用Google搜索时,我找不到任何关于它的信息。

req.body将包含您从客户端发送的数据。实际文件在oldDoc本身的位置。因为你什么都不做"你可以设置newDoc = oldDoc并返回它。以下是我对修改后的更新函数的卷曲请求后得到的标题

  

HTTP / 1.1 201已创建

     

X-Couch-Update-NewRev:3-97e66b27322db9deb7d03a32926488f0

     

X-Couch-Id:753ffdc034c3681616e5939d62000211

     

服务器:CouchDB / 1.5.0(Erlang OTP / R16B02)

     

日期:星期四,2014年4月3日06:37:57 GMT

     

Content-Type:text / html;字符集= UTF-8

     

内容长度:431

如果您尝试将文档更新为空值,则等同于

return[null,doc]

在这种情况下,文档实际上不会更新,您只需获得200 ok响应。来自the wiki

  

处理程序函数从数据库和http请求环境中获取最新版本的文档作为参数。它返回一个两元素数组:第一个元素是(更新的或新的)文档,它被提交给数据库。如果第一个元素为null,则不会将文档提交给数据库。