android - Room - SELECT 查询、获取或默认

标签 android kotlin rx-java2 android-room

在 SQL Brite 中,有一个方法 mapToOneOrDefault。 Room中有类似的东西吗?

说出模型

@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>
}

如果数据库中没有 John,则流不会为 getUserByName("John") 返回任何内容。有没有办法获取默认值,例如 User("")

最佳答案

Not the stream returns nothing for getUserByName("John") if there's no John in DataBase. Is there a way to get a default value, say User("")

没有默认机制。

您可以从 Flowable<User> 进行更改至Flowable<List<User>> 。如果没有用户,您将得到一个空列表。您可以使用 map检查并返回默认值或 filter + switchIfEmpty

或者您可以从 Flowable 进行更改至Single 。与Single ,如果没有与您的查询匹配的行,onError将被触发。然后您可以实现onErrorReturnonErrorResumeNext返回默认值

关于android - Room - SELECT 查询、获取或默认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46952593/

相关文章:

java - Rxjava2结合多种操作

multithreading - RxJava和多线程变量

android - ImageButton OnClickListener 不工作

带有 iOS : "Use of undeclared type ' KotlinCoroutineContext'"的 Kotlin 多平台

kotlin - Kotlin 中的保留关键字是什么?

android - 在 RecyclerView 项目中处置

Android 进度条样式以编程方式

java - 将字符串转换为整数并作为 ID 传递给 View 时出现问题

android - 在全屏 webview nokia x 中输入视频时出现 NullPointerException

java - 即使没有选中子项,RadioGroup.getCheckedRadioButtonId() 也不会返回 -1