我正在Adnroid
的{{1}} RxJava
开发中。
我使用改造来调用API并更新数据库中的值,如以下代码所示:
Room
当响应是来自API的 override fun certifyMail(userInfo: Userinfo): Observable<Int> {
return securityApi.certifyUserInfo(userInfo)
.map {
//return Observable<Status> here
when(it.status){
"OK" -> {
it
}
else -> {
throw Exception(it.msg!!)
}
}
}
.flatMap {
userInfoDataSource.updateUserCertifyMailInfo(userInfo.account,1)
//How to convert the return type to Observable<Int> from Int.
}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
}
时,我将如下更新数据库中的值。
OK
但是数据库的返回类型为@Query("UPDATE certify_info SET value = :value WHERE account = :account")
fun updateCertifyMailConfirm(account:String,value: Int):Int
。
如何将其隐藏到Int
?
谢谢。
答案 0 :(得分:0)
房间库可以返回RxJava的类型。
将// In the component you are having trouble :
constructor(private readonly activatedRoute: ActivatedRoute) {}
// Then, debug or log(activatedRoute)
库添加到您的项目
请查看此great article,以便更好地理解。
也结帐Google official sample about this
只需使用以下其中一种方法来编辑implementation "androidx.room:room-rxjava2:2.2.0-rc01"
方法(选择一种更适合的方法):
与Maybe一起
updateUserCertifyMailInfo
单身:
@Query("UPDATE certify_info SET value = :value WHERE account = :account")
fun updateCertifyMailConfirm(account:String,value: Int):Maybe<Int>
可流动/可观察:
@Query("UPDATE certify_info SET value = :value WHERE account = :account")
fun updateCertifyMailConfirm(account:String,value: Int):Single<Int>
重要!仔细阅读每种类型在房间查询中的行为