我正在使用 Kotlin 和 Flow 来使用查询结果的普通 JVM 项目中使用 MySql 和 Hikary 数据源来玩 SqlDelight。查询的第一次执行按预期返回数据,但是当数据库上的数据发生更改时不会触发 Flow#emit()。
这是我正在调用的存储库功能:
fun getAllUser(): Flow<List<User>> = database.userQueries.getAll()
.asFlow()
.mapToList()
这是调用存储库函数的主要函数:
fun main() = runBlocking<Unit> { repository.getAllUser().collect {
println("Collecting users: $it")
}
}
我已经尝试调试底层代码,并且注册了 Query 对象上的侦听器,并且在执行存储库函数时正确阻止了 main。还有其他人经历过类似的事情吗?