Couchbase получает канал ноль - PullRequest
0 голосов
/ 25 февраля 2019

Я использую последнюю версию Couchbase Server с Sync Gateway.В клиентском приложении 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 CouchbaseLiteTest [2474: 1149779]ОШИБКА CouchbaseLite Sync: {Push # 1} Получен ответ об ошибке на rev -YFzAmAK0VWolQcrIv2DiWH 1-a82becb9eacf1c02d0514aeb7f97cfcef9816bda (seq # 4): HTTP 500 'Исключение в функции синхронизации JS 10 * * * * * 10 * ошибка * * 10но канал все еще нулевой на сервере: (

1 Ответ

0 голосов
/ 26 февраля 2019

Я нашел решение, которое я соединял с медсестрой1 и медсестрой2, поэтому мне нужно добавить function(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")

_________ РЕДАКТ.

функция синхронизации на уровне пользователя не требуется.

...