Swift Couchbase接收通道空

Swift Couchbase接收通道空,swift,xcode,couchbase,couchbase-lite,couchbase-sync-gateway,Swift,Xcode,Couchbase,Couchbase Lite,Couchbase Sync Gateway,我正在使用最新的Couchbase服务器和同步网关。在客户端应用程序swift上,我推送如下文档: let userChannel = "\(self.login)" config.channels = [userChannel, "zzzz", "nurse1"] config.replicatorType = .pushAndPull _pushPullRepl = Replicator.init(config: config) _pushPullRepl

我正在使用最新的Couchbase服务器和同步网关。在客户端应用程序swift上,我推送如下文档:

 let userChannel = "\(self.login)"
    config.channels = [userChannel, "zzzz", "nurse1"]
       config.replicatorType = .pushAndPull
    _pushPullRepl = Replicator.init(config: config)
  _pushPullRepl?.start()
在服务器上,我收到了此文档,但问题是

   "channels": [
        null
      ]
所以,当我尝试通过通道提取文档时,我收到0个文档

我在这里有一个配置文件:

     {
"log": ["*"],
"adminInterface": ":4985",
"databases": {
  "dev": {
    "num_index_replicas": 0,
      "server":"http://localhost:8091",
      "bucket": "dev",
       "username": "admin",
       "password": "adminadmin",
      "users": { 
      "admin": { "disabled": false, "password": "adminadmin"},
      "nurse2": { "disabled": false, "password": "adminadmin", "admin_channels": ["nurse2", "_nurse2","nurse1", "_nurse1"]},
      "nurse1": { "disabled": false, "password": "adminadmin", "admin_channels": ["nurse1", "_nurse1", "nurse2", "_nurse2"] }
    }
  }

}
}

谢谢你的回复

编辑:

同步功能是

 "sync":
        `function(doc) {channel(doc.channels);}`
      }
我发现了一个错误

2019-02-25 18:07:14.234729+0100 CouchBaselite测试[2474:1149779] CouchbaseLite同步错误:{Push#1}对rev -YFzAmAK0VWolQcrIv2DiWH 1-A82BECB9EACF12D0514AEB7F97CFCEF9816BDA(序号4):HTTP 500“JS同步函数中的异常”


我不再有错误,但服务器上的通道仍然为空:(

我找到了与nurse1和nurse2连接的解决方案,因此我必须像这样向该用户添加
函数(doc){channel(doc.channels);}

     "users": { 
      "admin": { "disabled": false, "password": "adminadmin"},
      "nurse2": { "disabled": false, "password": "adminadmin","sync":
        `function(doc) {channel(doc.channels);}`, "admin_channels": ["nurse2", "_nurse2","nurse1", "_nurse1"]},
      "nurse1": { "disabled": false, "password": "adminadmin","sync":
        `function(doc) {channel(doc.channels);}`, "admin_channels": ["nurse1", "_nurse1", "nurse2", "_nurse2"] }
    }
      let channels = MutableArrayObject()
            channels.addString("nurse1")
            mutableDoc.setArray(channels, forKey: "channels")
在像这样保存之前,我还必须将频道添加到文档中

     "users": { 
      "admin": { "disabled": false, "password": "adminadmin"},
      "nurse2": { "disabled": false, "password": "adminadmin","sync":
        `function(doc) {channel(doc.channels);}`, "admin_channels": ["nurse2", "_nurse2","nurse1", "_nurse1"]},
      "nurse1": { "disabled": false, "password": "adminadmin","sync":
        `function(doc) {channel(doc.channels);}`, "admin_channels": ["nurse1", "_nurse1", "nurse2", "_nurse2"] }
    }
      let channels = MutableArrayObject()
            channels.addString("nurse1")
            mutableDoc.setArray(channels, forKey: "channels")
_________编辑


用户级别的同步功能不是必需的。

我发现我正在连接nurse1和nurse2的解决方案,因此我必须像这样向该用户添加
功能(doc){channel(doc.channels);}

     "users": { 
      "admin": { "disabled": false, "password": "adminadmin"},
      "nurse2": { "disabled": false, "password": "adminadmin","sync":
        `function(doc) {channel(doc.channels);}`, "admin_channels": ["nurse2", "_nurse2","nurse1", "_nurse1"]},
      "nurse1": { "disabled": false, "password": "adminadmin","sync":
        `function(doc) {channel(doc.channels);}`, "admin_channels": ["nurse1", "_nurse1", "nurse2", "_nurse2"] }
    }
      let channels = MutableArrayObject()
            channels.addString("nurse1")
            mutableDoc.setArray(channels, forKey: "channels")
在像这样保存之前,我还必须将频道添加到文档中

     "users": { 
      "admin": { "disabled": false, "password": "adminadmin"},
      "nurse2": { "disabled": false, "password": "adminadmin","sync":
        `function(doc) {channel(doc.channels);}`, "admin_channels": ["nurse2", "_nurse2","nurse1", "_nurse1"]},
      "nurse1": { "disabled": false, "password": "adminadmin","sync":
        `function(doc) {channel(doc.channels);}`, "admin_channels": ["nurse1", "_nurse1", "nurse2", "_nurse2"] }
    }
      let channels = MutableArrayObject()
            channels.addString("nurse1")
            mutableDoc.setArray(channels, forKey: "channels")
_________编辑


用户级的同步功能是不必要的。

你的同步功能在哪里?如果没有同步功能,你将永远不会将任何文档放入channelsah,这是肯定的,我只需要添加“同步”:“函数(doc){channel(doc.channels);”并且我得到错误2019-02-25 18:07:14.234729+0100 CouchbaseLiteTest[2474:1149779]CouchbaseLite同步错误:{Push#1}对rev-YFzAmAK0VWolQcrIv2DiWH 1-A82BECB9EACF12D0514AEB7F97CFCEF9816BDA的错误响应(seq#4):HTTP 500“JS同步函数中的异常”同步函数在哪里?如果没有同步函数,您将永远不会将任何文档放入channel SAH,可以肯定的是,我缺少的只是添加“同步”:“函数(doc){channel(doc.channels);”我得到了错误2019-02-25 18:07:14.234729+0100 CouchbaseLite测试[2474:1149779]CouchbaseLite同步错误:{Push#1}得到了对rev-YFzAmAK0VWolQcrIv2DiWH 1-a82becb9eacf12d0514aeb7f97cfcef9816bda的错误响应(seq#4):HTTP 500“JS同步函数中的异常”这不好。这不是同步函数的正确位置。它应该在数据库级别,而不是用户级别。它工作的原因是,这是您使用的默认同步函数,因此在客户端添加通道后,它将工作,但与t无关你放在那里的同步功能。它将在将来的版本中抛出一个错误。你说得对,我刚刚删除了用户级别的同步,但它仍然存在work@tamtoum1987你会考虑修正你的答案,然后接受它,让其他人从你的经验中获益吗?这不好。这不是同步功能的合适位置。它应该是正确的。d是在数据库级别,而不是用户级别。它工作的原因是,这是您使用的默认同步功能,因此在客户端添加频道后,它将工作,但与您在客户端添加的同步功能无关。它将在将来的版本中引发错误。您说得对,我刚刚在用户级和itwork@tamtoum1987你会考虑改正你的答案,然后接受它,让别人从你的经验中获益吗?