【发布时间】:2018-08-17 04:52:16
【问题描述】:
我在 MongoDB Atlas 上有一个新的沙盒集群,我正在使用 Node.js 服务器上的 mongoose 连接它。这是我用来连接的代码:
const mongoDbUrl =
`mongodb+srv://${username}:${password}@mydb-sandbox-12345.mongodb.net/testdb`
mongoose.connect(mongoDbUrl)
const connection = mongoose.connection
connection.on('connected', () => {
console.log('Connected to mongodb')
})
在 Atlas 仪表板中,我有一个 readWriteAnyDatabase 用户进行身份验证。身份验证按预期工作。我能够连接到数据库并且连接上没有引发错误。我可以通过删除密码中的一个字符来确认这一点 - 身份验证失败并且我无法连接。
问题是当我尝试插入文档时。
const UserModel = require('./models/User')
UserModel.create({
name: 'Hello Atlas'
})
我收到以下错误:
MongoError: not authorized on admin to execute command {
insert: "users",
documents: [
[{
name Hello Atlas
} {
_id ObjectIdHex("5aa17933d72d25730a340611")
} {
__v 0
}]
],
ordered: false
}
据我所知,与我进行身份验证的用户应该有权对我正在连接的数据库进行读写。我不明白的另一部分是错误表明它正在尝试写入admin,即使我的网址正在连接到testdb。
【问题讨论】:
-
另外一件值得注意的事情 - 我尝试使用 vanilla MongoDB 驱动程序编写相同的内容并且它可以工作。我使用相同的身份验证凭据连接到相同的 URL,并且能够将新的用户对象添加到 testdb。我想知道这是否与我的猫鼬配置有关。
标签: node.js mongodb mongoose mongodb-atlas