Room + RxJava 2 如何检查 table 中列等于特定值的记录

Room + RxJava 2 How to check for a record in a table in which a column is equal to a specific value

我有一个用户table。我需要检查是否存在具有特定名称的用户。我正在使用此代码执行此操作

UserDao

  @Query("SELECT * FROM User WHERE userName = :userName")
  fun getUserByUserName(userName :String) : Observable<User>

正在使用

  repository.getUserByUserName(input)
                .observeOn(mainThread())
                .subscribe(user -> {

                });

我订阅了这个Observable之后,但这只适用于存在这样一个用户的情况,但是如果用户不在数据库中,订阅就不起作用。如何处理用户在数据库中和用户不在数据库中的情况?

您可以使用 Single(或 Beloo 建议的 Maybe)代替 Observable。

您可以尝试这样的操作:

repository.getUserByUserName(input)
                .observeOn(mainThread())
                .subscribe(user -> {

                }, 
                throwable -> {
                // catch your exception here.                   
                }));