如何在 Couchbase 同步网关方式的配置文件中按通道过滤数据?

How to filter data by channel in config file of sync gate way in Couchbase?

我通过 Api 连接到同步网关,但我不知道如何过滤一些数据并在我的 laravel 项目中使用它们。

您没有在 syncgateway 配置中按通道过滤,过滤是同步功能的结果,但它更像是将通道附加到文档的被动结果。 我不知道您使用的是哪个版本,因为您的问题缺少它,但是配置非常简单。

你基本上有 2 个选项可以将频道附加到文档,第二个是覆盖第一个: 1.配置文件中没有任何同步功能,只依赖"channels"属性,属性将使文档同步到适当的渠道。 例如:

{ "name": "Duke", "lastName": "Nukem", "channels": ["DukeNukem","Duke"] }

2。在配置文件中有一个同步功能: 对于文档: { "name": "Duke", "lastName": "Nukem" }

您可能拥有可以执行相同操作的同步功能:

function(doc, oldDoc){
   if (doc.name && doc.lastName) {
        channel(doc.name);
        channel(doc.name + doc.lastName);
    }
}

请注意,您必须授予用户权限才能看到频道。

在客户端,您需要该用户具有权限,如果您没有过滤频道 - 每当您同步时都会获得文档。

请阅读更多here

这是客户端的 Swift 示例,说明如何使用 "channels" 路由数据:

let manager = CBLManager()
let database = try! manager.databaseNamed(dbName)
let pull = self.database.createPullReplication(url)
// We need to sync channels 
pull.channels = ["somechannels"]
pull.start()

Store 管理应用程序的具体示例,属于 Store 的每个文档都将使用包含 storeID 的频道保存。 在客户端,同步时我们会将 storeID 放在 channels 中,这样同步将只获取属于 Store 的文档。 (我们使用的是默认同步功能)

请注意,您需要考虑一些安全问题,阅读更多内容 here