Swift Couchbase接收通道空
我正在使用最新的Couchbase服务器和同步网关。在客户端应用程序swift上,我推送如下文档: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
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你会考虑改正你的答案,然后接受它,让别人从你的经验中获益吗?