kotlin - Room + Kotlin Flow 没有发出结果
问题描述
我正在尝试从 api 获取一些数据,并将它们存储在房间数据库中,所以主要数据源是 roomDatabase。
我的存储库代码如下所示:
suspend fun fetchData(): Flow<Response<List<Foo>>> {
val shouldRequestData = dao.getFoo().isEmpty()
return if (shouldRequestData) {
getFoo()
} else getLocalFoo()
}
override suspend fun getFoo(): Flow<Response<List<Foo>>> {
return ....... request done normally... inserting normally on database (and showing
on database inspector)
}
override suspend fun getLocalFoo(): Flow<Response<List<Foo>>> = flow {
dao.getFoo().transform<List<FooLocal>, Response<List<Foo>>> {
Response.Success(
it.map {
it.toDomainModel()
}
)
}
}
关于道:
@Query("SELECT * FROM localdb")
fun getFoo(): Flow<List<Foo>>
然后在视图模型上正常收集它......
问题是:数据没有出现..我怎么能解决这个问题?非流版本有效:/我已经搜索过这个问题,但似乎没有任何效果。
解决方案
通过将其放在 getLocalFoo() 上解决 ->
val result: Flow<Response<List<Foo>>> =
Transformations.map(dao.getFoo()) {
Response.Success(it?.map {
it.asDomainModel()
} ?: emptyList()
}.asFlow()
return result
推荐阅读
- docker - 本地运行的 docker 容器中的 Azure 托管标识
- mysql - Django,当 99% 的列是默认值时,向表中添加列的最佳做法是什么?
- android - 改造 - 上传图片
- php - 隐藏的输入值不显示在 php 的 foreach 循环中
- java - 我们可以从 linux Shell Script 或 Crontab 调用 Java Method 吗?
- java - Spring MVC 测试缺少来自 MockMvc 示例的导入
- splunk-query - 在 splunk 中搜索唯一 IP
- docker - Kubernetes:将 pod STDOUT、STDERR 和 pod 终止日志重定向到 PVC 文件
- java - 动态(以编程方式)创建视图时,视图在卡片视图中重叠
- spring-boot - 无法从 spring 控制器打印 JSP,但结果是在控制台中打印