1

我正在开始一个项目,在阅读了很多内容后,我得出的结论是,我应该使用来自移动和服务器(后端)应用程序的 Sync Gateway REST API 调用,而不是存储桶影子。但是,Sync Gateway 在进行查询时显然很烦人,尤其是动态查询。我的想法是为后端应用程序编写一个小模块,该模块将使用 Sync Gateway 进行写入,使用 NodeJS SDK 进行读取。通过这种方式,我能够使用 N1QL、视图等进行获取/查询(而不是使用 Sync Gateway 做尴尬的事情),并且我可以确保我的数据在写入时正确同步。

我的想法在这里有缺陷吗?谁能预见这种方法的任何问题?

4

2 回答 2

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

于 2016-07-28T05:49:32.333 回答
0

NodeJS SDK 无法访问 Sync Gateway 存储桶,除非使用存储桶影子,不推荐使用。

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

于 2016-07-25T12:01:08.340 回答