Synchronization CouchDB数据同步

Synchronization CouchDB数据同步,synchronization,couchdb,replication,pouchdb,Synchronization,Couchdb,Replication,Pouchdb,我正在为自己开发一个TODO应用程序。它必须先离线,所以数据同步很快就成了一个问题。至于我的搜索,CouchDB的数据同步(复制)做得很好,但我在这里有些困惑。 首先,我使用的是Flatter和Dart编程语言,Dart上没有任何沙发客户端。对于javascript,有一个明显的功能可以使数据与远程数据库自动同步(我说得对吗?)据我所知,没有任何第三方库应该是很好的,因为CouchDB自带本机HTTP API,我可以将用户数据存储为JSON文件,并将其作为文档与CouchDB服务器同步(我说得对

我正在为自己开发一个TODO应用程序。它必须先离线,所以数据同步很快就成了一个问题。至于我的搜索,CouchDB的数据同步(复制)做得很好,但我在这里有些困惑。
首先,我使用的是Flatter和Dart编程语言,Dart上没有任何沙发客户端。对于javascript,有一个明显的功能可以使数据与远程数据库自动同步(我说得对吗?)据我所知,没有任何第三方库应该是很好的,因为CouchDB自带本机HTTP API,我可以将用户数据存储为JSON文件,并将其作为文档与CouchDB服务器同步(我说得对吗?

另一个问题是,应该将用户数据存储为文档,还是应该为每个用户创建一个数据库(换句话说,coach是否同步数据库或文档?)它还引发了授权。访问数据库的用户可以访问所有文档。我想限制每个用户访问其文档,而无需在沙发和最终用户应用程序之间放置另一个API。

PockDB的一个主要好处是拥有本地数据库,这些数据库具有couchdb等API,但即使在脱机时也存在。因此如果你使用的是PockDB,想要离线工作,你几乎肯定会想要couchdb上的每用户dbs,并进行PockDB couchdb同步等。但是没有JS,你不能使用PockDB,在webview中依赖它,等等,这将大大削弱编译为本机代码而不是基于webview的应用程序的好处

直接使用HTTP API并存储本地文档可能更简单,首先每个用户在_users中的自己的用户文档上存储一些简单的东西作为附加的JSON。以后您可以随时添加每个用户的dbs。_users数据库有点特殊,因为它让每个用户都可以读取自己的文档,而无需允许他们访问其他用户文档,并依赖验证设计文档来保护重要字段,同时允许他们编辑数据

在这样的场景中,客户端在本地保留用户自己的文档的副本,在联网时需要将其同步回服务器。当然,用户与多个设备之间存在冲突的可能性,可以通过客户端自身比较本地和服务器版本或借助更新设计文档来解决服务器上的uments

从每个用户在他们自己的_users文档中拥有他们的私有数据开始,我们仍然可以为用户组构建数据库,其中组中的所有用户共享对所有文档的读取权限,但只能更新他们创建的文档。每个用户数据库实际上只是这样一个数据库的一个特例,其中组已减少到只有一个成员