我有一个带有简单数据的case class
:
case class MyClass(
details: Details,
names: List[String],
id: String,
)
我创建了一个沙发床查询,该查询应该从数据库中检索所有文档:
val query = s"SELECT * from `docs`"
for {
docs<- bucket
.query(N1qlQuery.simple(query))
.flatMap((rows: AsyncN1qlQueryResult) => rows.rows())
.toList
.parse[F]
.map(_.asScala.toList)
} yield docs
parse[F]
是一个简单的函数,可以从Observable
进行转换。这里的问题是我得到一个错误type mismatch
,该错误表明找到了List[AsyncN1qlQueryResult]
而不是必需的List[MyClass]
。如何将AsyncN1qlQueryResult
转换为MyClass
对象?
我正在使用Circe
来解析文档。
答案 0 :(得分:2)
我很高兴地报告,现在有一个较早的本机Couchbase Scala SDK可用,它确实包括支持将N1QL查询的每一行结果直接转换为您的案例类:
java -cp /path/to/spring-boot-fat.jar \
-Dloader.system=true \
-Dloader.main=liquibase.integration.commandline.Main \
org.springframework.boot.loader.PropertiesLauncher \
--changeLogFile=db/changelog/db-changelog-master.xml \
--driver=org.h2.Driver \
--url="jdbc:h2:~/h2db/liquibase-test;AUTO_SERVER=TRUE;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE" \
--password=sa \
--username=sa \
updateSQL
这是阻止API。还有一些API可以从Future或Reactive Programming中以Flux / Monos的形式获取结果,因此您在获取数据方面具有很大的灵活性。
您可以在此处了解如何入门:https://docs.couchbase.com/scala-sdk/1.0alpha/hello-world/start-using-sdk.html
请注意,这是一个Alpha版本,它使社区可以了解我们的发展方向,并为他们提供反馈的机会。它不应该在生产中使用。论坛(https://forums.couchbase.com/)是提出您任何反馈的最佳场所。