在Kotlin的vert.x verticle中创建和访问MongoDB数据库
我想通过vert.x创建和访问MongoDB。下面我将介绍如何从vert.x连接和使用MongoDB,但当我尝试使用下面的简单代码时,它会抛出一个错误在Kotlin的vert.x verticle中创建和访问MongoDB数据库,mongodb,kotlin,vert.x,Mongodb,Kotlin,Vert.x,我想通过vert.x创建和访问MongoDB。下面我将介绍如何从vert.x连接和使用MongoDB,但当我尝试使用下面的简单代码时,它会抛出一个错误 import io.vertx.core.Vertx import io.vertx.core.json.JsonObject import io.vertx.ext.mongo.MongoClient fun main() { val vertx = Vertx.vertx() val config = mapOf(Pair(
import io.vertx.core.Vertx
import io.vertx.core.json.JsonObject
import io.vertx.ext.mongo.MongoClient
fun main() {
val vertx = Vertx.vertx()
val config = mapOf(Pair("db_name", "testDB"), Pair("connection_string", "mongodb://localhost:27017"))
val mongoClient = MongoClient.create(vertx, JsonObject(config))
val document = JsonObject().put("title", "The Hobbit")
mongoClient.save("books", document) { res ->
if (res.succeeded()) {
val id: String = res.result()
println("Saved book with id $id")
} else {
res.cause().printStackTrace()
}
}
}
上面的代码抛出下面的错误
Jun 17, 2020 2:18:48 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
Jun 17, 2020 2:18:48 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: No server chosen by com.mongodb.async.client.ClientSessionHelper$1@3315d2d7 from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, serverDescriptions=[ServerDescription{address=localhost:27017, type=UNKNOWN, state=CONNECTING}]}. Waiting for 30000 ms before timing out
这是我的等级kotlin DSL文件依赖项
dependencies {
val vertxVersion = "3.9.0"
implementation(kotlin("stdlib-jdk8"))
implementation("io.vertx:vertx-lang-kotlin:$vertxVersion")
implementation("io.vertx:vertx-mongo-client:3.9.0")
}
我已经确认MongoDB正在我的机器上运行
另外,如何使用vert.x MongoClient API创建新的DB?当我在部署的verticle中访问MongoClient时,上面的代码会起作用。这是我更新的工作代码
import io.vertx.core.AbstractVerticle
import io.vertx.core.Vertx
import io.vertx.core.json.JsonObject
import io.vertx.ext.mongo.MongoClient
internal class BaseVerticle : AbstractVerticle() {
override fun start() {
val config = mapOf(Pair("db_name", "mnSet"), Pair("connection_string", "mongodb://localhost:27017"))
val mongoClient: MongoClient = MongoClient.create(vertx, JsonObject(config))
val document: JsonObject = JsonObject().put("title", "The Hobbit")
println("BasicVerticle started")
mongoClient.save("books", document) { res ->
if (res.succeeded()) {
val id: String = res.result()
println("Saved book with id $id")
} else {
res.cause().printStackTrace()
}
}
}
override fun stop() {
println("BasicVerticle stopped")
}
}
fun main() {
val vertx = Vertx.vertx()
vertx.deployVerticle(BaseVerticle())
}