Номер Android с RxJava обрабатывает пустой результат запроса

Попытка протестировать новую библиотеку Android Room с адаптером RxJava. И я хочу обработать результат, если мой запрос возвращает 0 объектов из БД:

Итак, вот метод DAO:

@Query("SELECT * FROM auth_info") fun getAuthInfo(): Flowable<AuthResponse> 

И как я справляюсь с этим:

  database.authDao().getAuthInfo() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .switchIfEmpty { Log.d(TAG, "IS EMPTY") } .firstOrError() .subscribe( { authResponse -> Log.d(TAG, authResponse.token) }, { error -> Log.d(TAG, error.message) }) 

Моя БД пуста, поэтому я ожидаю .switchIfEmty (), но никто из методов обработки не стреляет. Ни .subscribe (), ни .switchIfEmpty ()

Db Flowables являются наблюдаемыми (поэтому они продолжают отправлять сообщения при изменении базы данных), поэтому они никогда не завершаются. Вы можете попробовать вернуть List<AuthResponse> . Мы рассмотрели возможность портирования опциона, но решили не делать этого, по крайней мере пока. Вместо этого мы, вероятно, добавим поддержку Необязательного в разные известные библиотеки.

В версии 1.0.0-alpha5 добавлена ​​поддержка Maybe и Single для DAO, поэтому теперь вы можете написать что-то вроде

 @Query("SELECT * FROM auth_info") fun getAuthInfo(): Maybe<AuthResponse> 

Вы можете узнать больше об этом здесь

switchIfEmpty принимает как параметр Publisher<AuthResponse> . Через SAM-преобразование ваша анонимная функция превращается в этот класс. Однако это не соответствует поведению, ожидаемому от Publisher поэтому оно не будет работать должным образом.

Замените его правильной реализацией, такой как Flowable.empty().doOnSubscribe { Log.d(TAG, "IS EMPTY") } и он должен работать.

Intereting Posts
Невозможно размонтировать коллекцию объектов xml с использованием JAXB и Kotlin начальная позиция блока в классе в Котлине Связывание данных: ObservableField со значением лямбда не компилируется Файл Kotlin в собственном проекте iOS с Kotlin / Native Использование Mockito, Как мне отобразить класс Kotlin с декларацией поля интерфейса val? ': app: kaptDebugKotlin' ошибка в Android-студии 3 стабильной версии с номером 1 (RC) Ошибка коплинской капсулы Плагин Android-плагинов жалуется на ошибку перевода Uncaught Установка расширения котлина Как создать буферы протокола Google и Kotlin с использованием Gradle? Почему Котлин не разрешает использовать какой-либо код в основном конструкторе? Изменение цвета edittext Android для @mentions и #hashtags при наборе текста Прочитайте строку и добавьте что-то в конце Objectbox: Как инициализировать ToMany <> отношение в kotlin Как получить ALBUM ART песни с ее пути в котлин?