没有什么可以阻止您使用 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