在CouchDB复制过程中验证文档

在CouchDB复制过程中验证文档,couchdb,cloudant,Couchdb,Cloudant,在复制期间,我需要验证客户端试图写入我的CouchDB实例的文档。理想情况下,我应该拒绝允许所有其他文件通过的“无效”文件。其他可能的结果可能是拒绝整个复制过程,不完全接受任何文档。我无法使用validate\u doc\u update功能,因为它缺少做出决策所需的所有信息 我考虑在服务背后提供服务,并在应用程序级别验证文档。例如,从POST/\u bulk\u docs获取所有文档,如果某些文档无效,则返回400错误响应 我是否正确理解这样一种方法会停止复制过程,并且数据库可能会留下部分复制

在复制期间,我需要验证客户端试图写入我的CouchDB实例的文档。理想情况下,我应该拒绝允许所有其他文件通过的“无效”文件。其他可能的结果可能是拒绝整个复制过程,不完全接受任何文档。我无法使用
validate\u doc\u update
功能,因为它缺少做出决策所需的所有信息

我考虑在服务背后提供服务,并在应用程序级别验证文档。例如,从
POST/\u bulk\u docs
获取所有文档,如果某些文档无效,则返回400错误响应

我是否正确理解这样一种方法会停止复制过程,并且数据库可能会留下部分复制的文档?这是因为在复制过程中,可能会有一些
POST/\u bulk\u docs
调用,其中第一个调用包含所有有效文档,第二个调用包含无效文档

是否有其他方法,我如何仅丢弃无效文档


谢谢你的帮助

您可以通过复制文档应用Cloudant查询选择器来指定哪些文档是有效的。典型的例子是抛弃墓碑:

{
    "_id": "repl01",
    "source" : "https://.../<source>",
    "target" : "https://.../<target>",
    "selector": {
        "_deleted": {
            "$exists": false
        }
    }
}
{
“_id”:“repl01”,
“来源”:https://.../",
“目标”:https://.../",
“选择器”:{
“_删除”:{
“$exists”:false
}
}
}

有关详细信息,请参阅。

谢谢您的帮助,我不知道该部分。我正在考虑一种情况,即恶意客户端运行复制过程并试图将无效文档写入我的数据库;据我所知,在这种情况下,“选择器”不会有帮助,因为客户端可以在复制过程中忽略它。