首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Kotlin协程中使用Sqldelight

如何在Kotlin协程中使用Sqldelight
EN

Stack Overflow用户
提问于 2020-02-23 14:59:29
回答 2查看 1.4K关注 0票数 3

显然有用于SqlDelight的Kotlin协程扩展函数,但我不知道如何实现它们,因为我找不到文档。

我有一个普通的查询,如下所示:

代码语言:javascript
复制
val allItems
  get() = itemQueries.selectAll().mapToList()

我能把它变成一个挂起函数吗?

EN

回答 2

Stack Overflow用户

发布于 2020-02-23 14:59:29

目前(v1.2.1)没有对SqlDelight查询的挂起函数支持,但是您可以使用协程流程对象,这会更好。为此,您需要在您的应用程序gradle中添加协程扩展库:

代码语言:javascript
复制
dependencies {
  implementation "com.squareup.sqldelight:coroutines-extensions:1.2.1"
}

然后将您的查询转换为:

代码语言:javascript
复制
val allItems: Flow<List<Item>> = 
  itemQueries.selectAll()
    .asFlow()
    .mapToList()

此流发出查询结果,并在每次数据库为该查询更改时发出一个新结果。

然后,您可以在协程作用域中对结果进行.collect{}

票数 7
EN

Stack Overflow用户

发布于 2021-02-01 14:50:23

对于单次查询,您不需要协程扩展库。取而代之的是:

代码语言:javascript
复制
suspend fun getAllItems() = withContext(Dispatchers.IO) {
    itemQueries.selectAll().mapToList()
}

other答案特定于您想要对数据库中的更改做出反应的时间。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60359883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档