您好我读了两种实现couchapps的每文档读取访问的方法:
我对此有一些疑问:
是否有更多可能性来加强文档级别的读取权限?
如何在couchapp中创建用户私有数据库?我确实需要管理员权限,但填写我的应用程序的signUp表单的用户显然不具有管理员权限。我需要一个中间层(php等...)进行注册过程,以便我可以创建所需的数据库吗?
当我终于拥有这个数据库时,我需要使用过滤器开始连续复制。在某处,我读到重启服务器时不会恢复此类复制。我是否需要一个chronjob,在服务器崩溃的情况下,需要x个小时重新创建这些复制?
是不是浪费了大量的磁盘空间?对于注册我的应用程序的每个用户来说,大多数数据都会被复制,或者我错了吗? (特别是如果只有很少的信息不能被其他人阅读)
答案 0 :(得分:2)
除了修改CouchDB源代码之外,我知道没有其他方法可以立即使用。一种可能性是使用可能具有externals API的主干(或释放时的v1.1)。外部是Web服务器CouchDB将一些连接转发到。
您需要第三个图层,但不一定是中间图层。您的外部软件将作为管理员连接到CouchDB并执行待处理的任务。例如,当用户需要新数据库时,他们在公共数据库中创建文档,然后外部软件将创建数据库,将用户指定为管理员等。它非常容易 通过查询/_changes?feed=continuous
来执行此操作,因为您可以获得用户的实时更新。我更喜欢这个而不是中间层,因为软件更简单(没有额外的Web开发,只有CouchDB GET和PUT),它可以崩溃,重启,升级等,而不会对用户产生太大影响。
无论如何,一个cron工作并不是一个坏主意。嘿,它可能是上面第2步的外部处理器的一部分!但是,从CouchDB 1.1开始,复制将在沙发重新启动后重新启动。
不应浪费太多空间。根据您的应用程序,您希望获得共享数据库中的所有共享数据,以及每个用户的私有数据库中的所有私有数据。但即使您有重复的数据,我也不会将其称为 waste 。与开发人员的工作量或安全问题的无形成本相比,磁盘空间是一项非常的小费用。
根据您的应用程序,您将来可以获得移动或离线功能的巨大机会。当您发布iPhone,桌面或离线Web应用程序时,用户可以使用其数据库的本地副本,然后在服务器重新联机后与其“官方”数据库同步。对于某些应用程序,这已成为必备功能,因为人们希望在任何情况下都能使用应用程序。
答案 1 :(得分:0)
我在学士论文中汇总了一些读取访问的例子。您可以在此处找到示例代码:https://github.com/Goltergaul/bachelorthesis2---todolist-couchapp