我有更新方法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
,并且不会对文档进行任何更改。我做错了什么?
答案 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,则不会将文档提交给数据库。