我盯着用CouchDB建立服务。该应用程序旨在让用户拥有无限的存储桶,原因有几个,而且效果很好。 现在我因为一些企业功能而转向Couchbase。我使用PouchDB,这就是我需要Sync Gateway的原因。遗憾的是,我只能映射一个桶/数据库。
这对我来说是一个完美的解决方案:/ db / bucket / etc
任何想法如何实现这一目标?
答案 0 :(得分:5)
Couchbase Server存储桶可以保存任意数据。对于Sync Gateway,Couchbase Server存储桶仅是存储引擎目标,与用户和数据访问无关。在Sync Gateway配置文件中,您可以列出持久存储到不同存储桶的多个数据库:
{
"databases":{
"db1": {
"server": "http://localhost:8091",
"bucket": "db1bucket"
},
"db2": {
"server": "http://101.88.47.22:8091",
"bucket": "db2bucket"
}
}
}
现在,让我们假设您在配置文件中只声明了一个数据库,并希望用户能够访问某些文档。您可以使用其中一个authentication methods,然后根据该Sync Function写一个channels,它将在channel names to the replicator中路由文档,并授予用户访问这些频道的权限。频道是动态创建的,并且可以创建的频道数量没有限制。如果您不希望使用用户身份验证来访问频道中的文档,则可以在客户端指定Naming Files, Paths, and Namespaces(这更简单)。
建议的方法是每个项目或应用程序使用一个Sync Gateway数据库,而不是每个用户。因此,您可能必须将文档从不同的CouchDB数据库迁移到一个Sync Gateway数据库中。