【发布时间】:2019-11-03 09:35:54
【问题描述】:
NodeJS 应用使用 mongoose 5.6.0 连接到 MongoDB 4.0.10,MongoDB 4.0.10 在 docker 容器内的 localhost 上运行。
我们使用的时候就可以建立连接了
const mongoUri = 'mongodb://admin:mypassword@127.0.0.1:27017'
mongoose.connect(mongoUri)
问题:当我们包含我们要连接的数据库的名称时,我们开始收到身份验证错误。使用Python连接同一个MongoDB数据库没有问题。
const mongoUri = 'mongodb://admin:mypassword@127.0.0.1:27017/my-db'
mongoose.connect(mongoUri)
也试过了
const mongoUri = 'mongodb://admin:mypassword@127.0.0.1:27017/my-db'
mongoose.connect(mongoUri, { useNewUrlParser: true })
UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [MongoError: Authentication failed.
为什么无法建立连接,我们该如何解决这个问题?
更新
找到解决办法
const mongoUri = 'mongodb://admin:mypassword@127.0.0.1:27017'
mongoose.connect(mongoUri, { useNewUrlParser: true, dbName: 'my-db' })
为什么必须将dbname 作为选项传递,而不是将其包含在连接字符串中?
【问题讨论】:
标签: javascript node.js mongodb docker mongoose