Couchdb-lucene和经过身份验证的用户的即席查询

时间:2012-09-06 17:51:21

标签: couchdb couchdb-lucene

我正在使用CouchDB来存储来自各种源和couchdb-lucene的数据,以允许进行即席查询。这对我来说很重要,因为我在Feed中显示数据,我希望这个Feed可以过滤。 CL看起来很完美。

但是,我还想向Feed应用程序引入权限 - 用户只有在有权查看Feed项目时才能看到它。

现在,我希望能够运行即席查询,只返回当前经过身份验证的用户有权阅读的Feed项

我能解决的唯一解决方案(到目前为止)是为每个Feed项添加'权限'字段,其中我存储了其他用户的所有权限(显然跳过了对此项目没有权限的用户)全部)

permissions: [{user_id: '123', read: true, write: true}, ...]

然后在CL中索引此数组。

虽然这可能会有效,但我觉得被迫将权限元数据嵌套在feed项中有点不好......它甚至可能是一个更好的解决方案而不是保持它分开,但我只是不喜欢我不喜欢似乎在这里有一个选择。

唯一的其他解决方案(除了转储CouchDB之外)将运行即席查询而不关心权限,然后在服务器上运行第二个查询,选择所有“我的项目”并执行一组路口。但是那些集合可能很大(如果我把它组合起来,它可能需要很多数据库请求=>慢)。

我的解决方案是好还是还有什么更好的?或者CouchDB不适合这样的查询?

干杯!

1 个答案:

答案 0 :(得分:0)

您是在正确的道路上保留文档本身的权限数据。这将是您稍后构建视图的最简单方法,这将使您能够检查用户权限。所以不要担心,只要让它朝那个方向流动。当你使用SQL和RDBMS时,对于嵌套数据的感觉很糟糕,可能来自以前的年龄,你想要将每个表的地狱化标准化。这一次完全不同:)

是的,唯一的可能性是" JOINS"在CouchDB中使用Linked Documents。如果您有兴趣,可以尝试一下。但是,它不会使您在创建视图时查看链接的文档。