我正在为自己开发一个TODO应用程序。它必须先离线,所以数据同步很快就成了一个问题。至于我的搜索,CouchDB在数据同步(复制)方面做得很好,但这里有些混乱。
首先,我使用的是颤振和Dart编程语言,在Dart上没有任何沙发客户端。对于javascript,显然存在PouchDB,它使数据与远程数据库自动同步(是对吗?),据我所知,如果没有任何第三方库,应该是好的,因为CouchDB附带了原生HTTP,我可以将用户数据存储为JSON文件,并将其作为文档与CouchDB服务器同步(是对吗?)
另一个混乱 为 我是应该将用户数据存储为文档,还是应该为每个用户创建1个数据库(换句话说,沙发是否同步数据库或文档?)它还提出了授权。访问数据库的用户可以访问所有文档。我希望将每个用户限制在其文档上,而不会在沙发和最终用户应用程序之间放置另一个API。
发布于 2020-06-18 18:23:26
pouchdb的一个主要好处是本地数据库具有像couchdb这样的API,但在离线时仍然存在。因此,如果您正在使用pouchdb并希望脱机工作,那么您几乎肯定希望在couchdb上为每个用户dbs提供服务,并执行pouchdb <-> couchdb同步等等。但是,如果没有JS就不能使用pouchdb,并且依赖于它,那么编译到本地代码而不是基于were视图的应用程序将很大程度上削弱了编译本地代码的好处。
直接使用HTTP并存储本地文档,从每个用户在_users中自己的用户文档中存储一些简单的东西作为附加JSON开始可能更简单。以后总是可以添加每个用户的dbs。_users数据库有点特殊,因为它允许每个用户对自己的文档进行读取访问,而不必给他们访问其他用户文档的权限,并且依赖于验证设计文档来保护重要字段,否则就允许他们编辑数据。
在这种场景中,客户端在本地保存用户自己文档的副本,需要在有网络时同步到服务器。当然,具有多个设备的用户也有冲突的可能性,它们可以通过客户机本身比较本地和服务器版本,或者通过服务器上的更新设计文档来解决。
从每个用户在自己的_users文档中拥有自己的私有数据开始,仍然可以为用户组构建dbs,在这些用户组中,该组中的所有用户共享对所有文档的读取访问,但只能更新他们创建的文档。每个用户db实际上只是这样一个数据库的特例,其中组已经减少到只有一个成员。
https://stackoverflow.com/questions/62426021
复制相似问题