Я рад сообщить, что сейчас доступен ранний выпуск собственного пакета Couchbase Scala SDK, который включает в себя поддержку преобразования каждого результата строки запроса N1QL непосредственно в ваш класс дел:
case class Address(line1: String)
case class User(name: String, age: Int, addresses: Seq[Address])
object User {
// Define a Codec so SDK knows how to convert User to/from JSON
implicit val codec: Codec[User] = Codecs.codec[User]
}
val statement = """select * from `users`;"""
val rows: Try[Seq[User]] = cluster.query(statement)
.map(result => result
.rows.flatMap(row =>
row.contentAs[User].toOption))
rows match {
case Success(rows: Seq[User]) =>
rows.foreach(row => println(row))
case Failure(err) =>
println(s"Error: $err")
}
Это API блокировки.Также есть API-интерфейсы, позволяющие получать результаты в виде Futures или Flux / Monos из Reactive Programming, поэтому у вас есть много возможностей для получения данных.
Вы можете увидеть, как начать работу здесь: https://docs.couchbase.com/scala-sdk/1.0alpha/hello-world/start-using-sdk.html
Обратите внимание, что это альфа-релиз, позволяющий сообществу понять, к чему мы идем, и дать им возможность высказать свое мнение.Это не должно использоваться в производстве.Форумы (https://forums.couchbase.com/) - это лучшее место, где можно оставить отзыв.