CouchDB 对 CRUD 事件的验证
CouchDB validation on CRUD events
我正在尝试为 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 方法的使用检查不正确。有人看到我做错了什么吗?
对于那些来到这里需要检查存储在 CouchDB 数据库中的文档的 CRUD 事件的人。我做了一些实验来定义如何检查 CouchDB 设计文档中的每个 CRUD 事件。
我想到了这个解决方案(这些可以在 if 语句的条件中使用):
创建
newDoc !== null && oldDoc === null
阅读
通过将用户添加到数据库来实现。
对于基于每个用户的读取限制,请阅读:CouchDB - prevent unauthorized reads
更新
newDoc !== null && oldDoc !== null
删除
newDoc._deleted === true
我正在尝试为 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 方法的使用检查不正确。有人看到我做错了什么吗?
对于那些来到这里需要检查存储在 CouchDB 数据库中的文档的 CRUD 事件的人。我做了一些实验来定义如何检查 CouchDB 设计文档中的每个 CRUD 事件。
我想到了这个解决方案(这些可以在 if 语句的条件中使用):
创建
newDoc !== null && oldDoc === null
阅读
通过将用户添加到数据库来实现。
对于基于每个用户的读取限制,请阅读:CouchDB - prevent unauthorized reads
更新
newDoc !== null && oldDoc !== null
删除
newDoc._deleted === true