我尝试从api中获取一些数据,它们存储在room数据库中,因此主要数据源是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>>
然后在ViewModel上正常收集。
问题是:数据没有出现..我该如何解决这个问题?非流版本工作:/我已经搜索了这个问题,但似乎没有工作。
2条答案
按热度按时间6ovsh4lw1#
通过将其放在getLocalFoo()-〉上解决
nue99wik2#
我已经找到了解决投入这么多时间的办法。
解决方案:当我们将详细信息插入房间数据库并从DB中获取信息时,应该使用相同的Dao对象。
如果你用的是剑柄
@Singleton注解将起作用。
我希望这能解决你的问题。