Intereting Posts
Как функции хранения в статической коллекции будут влиять на систему? Как получить различную реализацию функции верхнего уровня в Unit и InstrumentTests для Android Преобразовать тип с нулевым значением в его тип, не содержащий NULL? Создание Kotlin нового Gluon для разработчиков Java Информация не загружается должным образом в firebase-firestore Как мне передать класс / класс класса Kotlin из String? Модернизация 2 Многостраничные запросы Как я могу проверить метод, который не вызывается для объекта без макета? Как я могу совместно использовать конфигурацию конфигурации между двумя файлами build.gradle.kts? Проблема Котлина Управление объектами в рамках мероприятий, чтобы избежать использования Null Что означает смысл в котлине? @Parcelize аннотации toghether с наследованием Kotlin – Возможно ли инициализировать объект-компаньон перед блоком init в классе? @Inject set Not Injecting Property

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 для сопоставления с новым объектом, если запрос не возвратил значение.

Справка