【发布时间】:2021-09-30 15:33:50
【问题描述】:
请帮助我将 mongodb 连接到我的 ktor 应用程序。 这是我拥有的代码,来自这篇文章:https://himanshoe.com/mongodb-in-ktor
class MongoDataHandler {
val client = KMongo.createClient().coroutine
val database = client.getDatabase("dev")
val userCollection = database.getCollection<User>()
suspend fun adduser(email: String, username: String, password: String): User? {
userCollection.insertOne(User(userId = null, email = email, userName = username, passwordHash = password))
return userCollection.findOne(User::email eq email )
}
suspend fun finduser(id: String): User?{
return userCollection.findOneById(id)
}
}
我按照他们网站的指示安装了 mongodb。成功安装后,mongodb 将作为服务启动。我运行此命令“C:\Program Files\MongoDB\Server\5.0\bin\mongo.exe”来使用 mongodb。当我使用“show dbs”检查可用的数据库时,我意识到我的数据库(dev)没有列出。 这是正在使用的依赖项:
implementation("org.litote.kmongo:kmongo-coroutine:4.2.8")
这是我得到的错误:
[eventLoopGroupProxy-4-1] INFO Application - 500 Internal Server Error:
POST - /user
我想我做错了什么......提前谢谢
【问题讨论】:
-
您是否能够在没有 Ktor 的情况下连接到 MongoDB 数据库?如果是这样,请分享一个完整项目的代码。
-
是的,我可以在没有 Ktor 的情况下连接到 mongodb。这是项目的链接.. github.com/Toluxpersia/Link.. 谢谢
-
如果我在使用有效值运行应用程序时传递了环境变量
JWT_SECRET和SECRET_KEY,那么java.lang.IllegalStateException: generation for id property type not supported : class kotlin.Int会在adduser方法中抛出。 -
另外,请确保您使用
Content-type: application/x-www-form-urlencoded发送请求。 -
您可以尝试对 JWT_SCRETE 和 SECRET_KEY 常量使用字符串变量吗?我使用 Postman 适当地提出请求。但最终,我是否正确地创建和初始化了数据库?
标签: kotlin kotlin-coroutines ktor kmongo