Room – запрос SELECT, получение или дефолт

В SQL Brite существует метод mapToOneOrDefault . Есть ли что-то подобное в Комнате?

Скажите модели

 @Entity(tableName = "users") data class User(@PrimaryKey val name: String) 

и Дао

 @Dao interface UserDao { @Query("SELECT FROM users where name = :name") fun getUserByName(name: String): Flowable<User> } 

Не поток ничего не возвращает для getUserByName("John") если в getUserByName("John") данных нет John . Есть ли способ получить значение по умолчанию, скажем, User("") ?

Не поток ничего не возвращает для getUserByName («Джон»), если в базе данных нет Джона. Есть ли способ получить значение по умолчанию, например User ("")

Механизм по умолчанию отсутствует.

Вы можете перейти от Flowable<User> в Flowable<List<User>> . В случае отсутствия пользователя вы получите пустой список. Вы можете использовать map для проверки и возврата значения по умолчанию или filter + switchIfEmpty .

Или вы можете перейти от Flowable к Single . С Single , в случае отсутствия строк, соответствующих вашему запросу, onError . Затем вы можете реализовать onErrorReturn или onErrorResumeNext чтобы вернуть значение по умолчанию

В этом случае вы можете использовать Maybe вместо Flowable .

Возможно: концептуально это объединение Single и Completable, обеспечивающее средства для захвата схемы излучения, где может быть 0 или 1 элемент или ошибка, сигнализируемая некоторым реактивным источником.

Затем вы можете использовать оператор defaultIfEmpty для сопоставления с новым объектом, если запрос не возвратил значение.

Справка

Intereting Posts
Что значит ?. означает в Котлине при использовании в левой части задания? Как назначить значение параметру KMutableProperty? IntellJ IDEA Плагин Kotlin – «нет доступных конфигураторов» Как я получаю HandlerMethod соответствует HttpServletRequest в фильтре Kotlin: исключить null из списка (или другого функционального преобразования) Лучший способ применить преобразование к каждому элементу в списке одновременно в Котлине Параметрированные тесты JUnit5 на уровне класса Android Espresso – Как проверить соответствие просмотров до завершения операции? Как издеваться над одним и тем же методом несколько раз, используя mockito Внутренние занятия Наследование в Котлине Не удается создать проект с Android Studio 3.0 + DataBinding + Kotlin Обнаруживать конфликты просмотров и предотвращать перенасыщение Весенняя аннотация не работает в Котлине AlerDialog с настраиваемой компоновкой Синхронный вызов Android Retrofit 2