- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我准备在 CouchDB
服务器端编写一个过滤器函数,过滤特定于用户的文档。此过滤器将只允许复制特定用户有权访问的少数选定文档,而不是 TB 大小的整个数据库。
在这里我发现了一个类似的问题CouchDB: Restricting users to only replicating their own documents但它没有提供我需要的信息。
所以我的问题仍然存在:
我应该在每个文档中包含什么,以便过滤器以这种方式工作:
在社交网络的上下文中,假设您要从服务器获取图片等用户数据,在这种情况下,包含图片的文档将包含 userId
。但有时会出现这种情况,此人的 friend 会访问他的个人资料,然后他们也将能够查看这些照片。在这种情况下,每当 friend 访问他的个人资料时,图片文档将被复制给 friend ,他也将能够查看这些照片。
我怎样才能完成这样的过滤器?
更多信息:在移动平台端,我使用 CouchbaseLite,在服务器端,我使用 CouchDB。我只想在移动平台上过滤文档。
最佳答案
CouchDB 过滤器函数只能访问被过滤的单个文档,因此您不能使用来自其他文档的任何信息。这排除了“类似加入”的方法,例如从照片发布文档取消引用到所有者文档以查找所有者的 friend 列表。
基本上,您必须在每个文档中包含一个属性,列出应该获得它的确切用户组。
另请注意,这不提供任何类型的访问控制。无法有选择地拒绝对 CouchDB 中文档的读取访问,因此您无法阻止用户查看陌生人的相册。为此,您必须采用每个用户一个数据库的方法,该方法有其自身的缺点——您最终必须在数据库之间设置大量复制以在它们之间共享文档,这不能很好地扩展.
看看 Couchbase Sync Gateway (https://github.com/couchbase/sync_gateway)——它与 CouchDB 复制兼容,但增加了支持这种选择性同步和访问控制的功能。用它来实现社交网络应该是绝对可行的;这是我们在设计它时想到的用例之一。 (我是该项目的首席工程师。)
关于database - 基于 JSON 的数据库(如 Couchbase、CouchbaseLite、CouchDB 等)的理想复制过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22216906/
我正在开发一个快速应用程序,我使用了 CouchDB 数据库。为此,我下载了 couchDB 框架并将其添加到我的项目中。它在模拟器上运行良好,但是当我在 iPad 设备上运行我的应用程序时,它会出现
我决定使用适用于 Android 的 TouchDB 制作我的应用程序,它是适用于移动平台的 CouchDB 的精简版。我可以在 github 上找到这方面的示例项目,但我没有找到在 Android
我想在 CouchbaseLite 中执行从远程服务器到移动设备的过滤器复制,因为我只想将特定文档从服务器更新到设备,反之亦然。 但是没有 Couchbase Lite Android 的过滤器推送和
我想将文件附加到 CouchbaseLite 文档。我怎样才能这样做呢?我在 CBLite 官方网站上没有找到任何代码示例 - CBLite code Sample 。我仍然不知道如何实现它。 在代码
我的文档 let properties: [String : Any] = [ "project_id":Task.project_id!, "titl
我试图向用户显示复制进度,但到目前为止我找不到检索此信息的方法。我正在使用 iOS。我知道复制对象中的 changesCount 和 completedChangesCount,但是您不能轻易地将其转
我正在尝试使用实时查询来监听文档更改,并且我有一些基于此实时查询的操作,并且假设实时查询也在文档删除时触发。我只是想在开始实现之前确认是否是这种情况。 最佳答案 是的,实时查询在删除时会触发 Chan
我有一个使用 Couchbase Lite 的应用程序。直到现在我一直在使用 http,现在我们需要确保安全。那么如何让所有的 HTTPS URL 与 CouchbaseLite Android 同步
我准备在 CouchDB 服务器端编写一个过滤器函数,过滤特定于用户的文档。此过滤器将只允许复制特定用户有权访问的少数选定文档,而不是 TB 大小的整个数据库。 在这里我发现了一个类似的问题Couch
我在我的项目中使用 couchbaselite enterprise。在我将 XCODE 从 10.3 升级到 11.2 后,我收到了这条错误消息。 (使用Swift 5.1编译的模块不能被Swift
我是一名优秀的程序员,十分优秀!