Couchbase同步网关客户端和服务器端

时间:2016-07-20 01:27:06

标签: couchbase couchbase-sync-gateway

我正在开始一个项目,经过大量阅读后我得出的结论是,我应该使用来自移动和服务器(后端)应用程序的Sync Gateway REST API调用,而不是使用存储桶阴影。但是,在进行查询时,Sync Gateway显然非常烦人,尤其是动态查询。我的想法是为后端应用程序编写一个小模块,它将使用Sync Gateway进行写入,使用NodeJS SDK进行读取。这样我就可以使用N1QL,视图等进行获取/查询(而不是使用Sync Gateway做尴尬的事情),我可以确保在写入时我的数据正确同步。

我的想法在这里有缺陷吗?任何人都可以预见到这种方法的任何问题吗?

2 个答案:

答案 0 :(得分:1)

没有什么可以阻止您使用NodeJS SDK直接连接到同步网关存储桶。但是,存储桶的JSON内容未公开记录,并且可能在将来的版本中发生更改。

2014年6月的论坛帖子默认了这种方法是可行的,风险自负:https://groups.google.com/forum/#!topic/mobile-couchbase/OeTk1fzYJvE

  

我认为与Sync Gateway交互的主要模式是服务器代码订阅频道,偶尔根据它看到的变化来改变文档。如果出现偶尔的map reduce查询,我认为可以在网关桶中运行那些查询,并完全避免桶阴影的开销。只要您了解Sync Gateway数据布局将来可能会发生变化。我们不认为我们存储在Couchbase Server中的JSON是公共API。

     

现在你想要像这样包装你的地图函数:

function(doc, meta) {
  if (doc._sync && !doc._deleted) {
    emit(doc.foo, null);
  }
}

方法是使用过滤器定义视图以排除同步网关文档。但是,上面的警告仍然适用:同步网关可能会更改它在未来版本中表示文档的方式。

我还找到了另一个SO答案,详细说明了同步网关存储桶上的N1QL查询:https://stackoverflow.com/a/37036363

答案 1 :(得分:0)

NodeJS SDK无法访问Sync Gateway存储桶,除非使用存储桶阴影,建议不要这样做。

如果您不想使用Couchbase mobile,请选择不使用Sync Gateway,将Couchbase服务器和NodeJS SDK用于服务器端,并为移动设备创建自己的REST API。