Java Spring Webflux不考虑数据库名称MongoDB的配置
我正在尝试用SpringWebFlux和MongoDB实现一个反应式应用程序。 我在application.properties文件中有以下配置:Java Spring Webflux不考虑数据库名称MongoDB的配置,java,spring,mongodb,spring-webflux,Java,Spring,Mongodb,Spring Webflux,我正在尝试用SpringWebFlux和MongoDB实现一个反应式应用程序。 我在application.properties文件中有以下配置: spring.data.mongodb.database=my-db spring.data.mongodb.uri=mongodb://user:pass@host:port/my-db 但是,当我尝试将一些文档保存到MongoDB时,我遇到以下错误: backend_1 | Caused by: com.mongodb.MongoComma
spring.data.mongodb.database=my-db
spring.data.mongodb.uri=mongodb://user:pass@host:port/my-db
但是,当我尝试将一些文档保存到MongoDB时,我遇到以下错误:
backend_1 | Caused by: com.mongodb.MongoCommandException: Command failed with error 13 (Unauthorized): 'not authorized on test to execute command { insert: "user", ordered: true, $db: "test" }' on server database:27017. The full response is { "ok" : 0.0, "errmsg" : "not authorized on test to execute command { insert: \"user\", ordered: true, $db: \"test\" }", "code" : 13, "codeName" : "Unauthorized" }
backend_1 | at com.mongodb.internal.connection.ProtocolHelper.getCommandFailureException(ProtocolHelper.java:179) ~[mongodb-driver-core-3.8.2.jar:na]
backend_1 | at com.mongodb.internal.connection.InternalStreamConnection$2$1.onResult(InternalStreamConnection.java:370) ~[mongodb-driver-core-3.8.2.jar:na]
我简直无法理解为什么驱动程序不尊重数据库名称的配置,并试图插入数据库测试(因此失败)。
我错过什么了吗
还有一件事是,我正在使用docker compose的单独容器中使用Java后端和MongoDB。我找到了身份验证问题的解决方案。 我缺少的是authSource,所以我在数据库URI中添加了它,它就工作了
spring.data.mongodb.uri=mongodb://user:pass@host:port/my-db?authSource=admin
但是,我仍然不明白为什么Java后端创建的文档被插入到测试数据库中,而不是我配置为使用的数据库中。将其放入application.properties文件:
# MongoDB
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=my-db
spring.data.mongodb.username=username
spring.data.mongodb.password=password