1

我正在尝试为 CouchDB 编写一个验证函数,该函数仅应在使用的 HTTP 方法是 post 时运行(类似于 CRUD 术语中的 CREATE 事件)。

这是我的代码:

function(newDoc, oldDoc, userCtx) {
  if (newDoc.type == "post") {
    throw({forbidden : 'no way'});
  }
}

我将它放在这样的设计文档中:

{
  "_id": "_design/delete",
  "_rev": "7-6bd645d2412fea53011a480d71590ff8",
  "validate_doc_update": "function(newDoc, oldDoc, userCtx) {if (newDoc.type == 'post') {throw({forbidden : 'no way'});}}"
}

我期望它将拒绝创建我尝试添加到数据库的任何新文档。但由于某种原因,该功能似乎根本没有被触发。

我猜我对使用 post 方法的检查不正确。有谁看到我做错了什么?

4

1 回答 1

1

对于那些来到这里需要检查存储在 CouchDB 数据库中的文档上的 CRUD 事件的人。我做了一些实验来定义如何检查 CouchDB 设计文档中的每个 CRUD 事件。

我想出了这个解决方案(这些可以在 if 语句的条件下使用):

创造

newDoc !== null && oldDoc === null

通过将用户添加到数据库来实现。

对于基于每个用户的读取限制,请阅读以下内容:CouchDB - 防止未经授权的读取

更新

newDoc !== null && oldDoc !== null

删除

newDoc._deleted === true
于 2019-09-12T13:21:12.340 回答