我正在使用 CouchDB 存储来自各种来源的数据,并使用 couchdb-lucene 来允许临时查询。这对我很重要,因为我在提要中显示数据并且我希望此提要可过滤。CL 似乎非常适合。
但是,我还想为提要应用程序引入权限 - 用户应该只有在他/她有权查看提要项目时才能看到它。
现在,我希望能够运行临时查询,并且只返回当前经过身份验证的用户有权读取的提要项目。
我能想到的唯一解决方案(到目前为止)是在每个提要项目中添加一个“权限”字段,我在其中存储其他用户的所有权限(显然跳过了根本没有权限的用户)
permissions: [{user_id: '123', read: true, write: true}, ...]
然后在 CL 中索引这个数组。
虽然这可能会奏效,但我觉得被迫将权限元数据嵌套在提要项目中有点糟糕......它甚至可能比将其分开更好的解决方案,但我只是不喜欢我似乎不喜欢在这里有一个选择。
唯一的其他解决方案(嗯,除了转储 CouchDB 之外)是运行临时查询而不关心权限,然后在选择所有“我的项目”的服务器上运行第二个查询并进行设置交集。但是这些集合可能很大(如果我将它分块,它可能需要很多 DB 请求 => 慢)。
我的解决方案很好还是有更好的解决方案?还是 CouchDB 不适合此类查询?
干杯!