gpt4 book ai didi

node.js - 无法使用 Mongoose 在 MongoDB Atlas 数据库上读取/写入

转载 作者:太空宇宙 更新时间:2023-11-04 02:50:13 25 4
gpt4 key购买 nike

我在 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

最佳答案

不确定您是否看过此post ,但这可能是因为您位于免费集群上?希望这会有所帮助。

更新

我进一步研究了这个问题并自己重现了它。我遇到了同样的错误。然而,我注意到 Atlas 有一次为我提供了连接字符串的选择。我返回到该页面并选择我使用的是 3.4 或更早版本的驱动程序

连接字符串如下所示:

const mongoDbUrl = `mongodb://${username}:${password}@cluster0-shard-00-00-1wntz.mongodb.net:27017,cluster0-shard-00-01-1wntz.mongodb.net:27017,cluster0-shard-00-02-1wntz.mongodb.net:27017/testdb?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin`;

它与该连接字符串一起使用。

看起来免费版本的 MongoDB Atlas 随 v3.4 一起推出

关于node.js - 无法使用 Mongoose 在 MongoDB Atlas 数据库上读取/写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49179829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com