首页 文章

Couchbase Lite和CouchDb

提问于
浏览
0

我已经构建了一个基于Couchbase Lite的Android应用程序,它通过Sync Gateway与Couchbase数据库通信 . 我现在尝试使用CouchDB 2.0数据库来复制Couchbase Lite,但是我收到以下错误:

W/RemoteRequest: com.couchbase.lite.replicator.RemoteRequest {POST,
http://192.168.1.5:5984/_revs_diff}: Got error status: 404 for
http://192.168.1.5:5984/_revs_diff. Reason: Object Not Found
W/Sync: PusherInternal{http://192.168.1.5:5984, push, 12ff9}: Progress:
set error =com.couchbase.lite.replicator.RemoteRequestResponseException:
Object Not Found

请注意,为此我不会通过Sync Gateway,而是将Couchbase Lite直接指向CouchDB Url .

我不知道是否需要通过Sync Gateway,但是我在Couchbase lite上阅读Couchbase文档后的印象是,在连接到CouchDb数据库时我没有这个帖子,而且这篇文章似乎支持了这一点 . https://github.com/couchbase/sync_gateway/issues/312

有人可以确认couchbase lite是否可以直接使用CouchDb 2.0数据库进行复制,如果是这样,设置它的正确方法是什么?

此外,该应用程序将被许多网站使用,一个网站可以由一个或多个用户组成 . 我之所以考虑改用CouchDb,是因为每个站点都有一个数据库,这在Couchbase中似乎不太容易实现 . 但是,我现在已经在Couchbase中发现了Channels,它允许我使用一个数据库但是可以访问受站点限制的文档(即一个站点可能有很多用户,所有用户都应该可以访问该站点的所有文档) .

在CouchDb中使用单独的数据库或在Couchbase中使用通道的优缺点是什么?

谢谢 .

2 回答

  • 0

    回应几点:

    主要的是我认为你可以在Couchbase中轻松完成你想做的事 . Couchbase Server中的存储桶有点等同于单独的数据库 . 所以你可以这样分割你的网站 . 正如您所见,Sync Gateway中的通道为您提供了更多控制,可以分离数据和控制访问 .

    Couchbase Lite应该能够与CouchDB同步,但是从你的代码片段来看,这很难说是什么问题 . 您可以查看此帖子以获取一些想法:CouchDB: how to use _revs_diff to get document revision ID

    Sync Gateway公开了CouchDB复制 endpoints 的一种超集,因此使用Couchbase Lite和Sync Gateway可以获得更大的灵活性 .

  • 1

    正如@Hod所说,不同的桶相当于Couch DB中的不同数据库,所以你可以去做 .

    其次,如果可以的话,肯定鼓励使用sync_gateway的channels属性,因为创建单个存储桶比多个存储桶更受欢迎,而且我已经将sync_gateway与couch Lite和Couch服务器一起使用,它工作得很好并且准确无误,所以我认为你应该使用sync_gateway和渠道而不是创建多个桶

相关问题