Получите изменения имени базы данных MyCouch - PullRequest
0 голосов
/ 29 апреля 2018

Мне нужны имена баз данных и их изменения в моем приложении.

Это мой код:

var cancellation = new CancellationTokenSource().Token;

var cnInfo = MyCouch.DbConnectionInfo(serverUrl, "_all_dbs");

cnInfo.BasicAuth = authString;

cnInfo.Timeout = TimeSpan.FromMilliseconds(System.Threading.Timeout.Infinite);

var db = new MyCouch.MyCouchClient(cnInfo);
var changes = db.Changes.ObserveContinuous(MyCouch.Requests.GetChangesRequest
               (
                   Feed = MyCouch.ChangesFeed.Continuous,
                   Since = "0",
                   Heartbeat = 999999999, 
                   IncludeDocs = true,
                   Style = MyCouch.ChangesStyle.MainOnly
               ), cancellation).Take(1).Wait();

Первая попытка через несколько минут возвращает имена баз данных, но блокируется при следующих попытках. Я могу получить имена баз данных по getting http://localhost:5984/_all_dbs.

Я почти уверен, что у меня есть несколько баз данных на сервере.

Обновление: Подписка на изменения действует:

db.Changes.ObserveContinuous(MyCouch.Requests.GetChangesRequest
               (
                   Feed = MyCouch.ChangesFeed.Continuous,
                   Since = "0",
                   Heartbeat = 999999999, 
                   IncludeDocs = true,
                   Style = MyCouch.ChangesStyle.MainOnly
               ), cancellation).Subscribe(print); //=> the print works.

Основная проблема, похоже, .Take(1).Wait(). Я ожидаю, что .Take(1) добавит .OnCompleted() к наблюдаемому, но это не так. Есть предложения?

...