Mongo DB Atlas Mongoose凭据必须是对象

mspsb9vt  于 2023-01-02  发布在  Go
关注(0)|答案(2)|浏览(215)

删除Mongoose包并重新安装后,我遇到了一个错误。
我得到的错误似乎与Mongo DB Atlas instruction上的指令冲突。在dbURI中放置用户名和密码的位置。
错误:
蒙戈解析错误:凭据必须是具有"username"和"password"属性的对象
这是我的连接:

const dbURI =  "mongodb+srv://admin:mypass@cluster0.iujq0.mongodb.net/myApp?retryWrites=true&w=majority"

const options = {
    auth: { authSource: 'admin'},
    useUnifiedTopology: true,
    useNewUrlParser: true,        
}    

mongoose.set('strictQuery', false);
mongoose.connect(dbURI, options)
    .then(() => console.log('MongoDB Connected'))
    .catch(err => console.log(err))

该错误指示将用户名和口令放入选项对象
我使用节点v 19.3和Mongoose 6.8.2。

wlwcrazw

wlwcrazw1#

你不需要在mongoose的connect方法中指定用户名和密码,因为它已经被插入到URL本身中了。换句话说,当连接到你的Atlas时,不需要添加任何选项。
下面是一个例子:

const dbURI =  "mongodb+srv://tichel-admin:appeltaart@cluster0.iujq0.mongodb.net/myApp?retryWrites=true&w=majority"

const options = {
    auth: { authSource: 'admin'},
    useUnifiedTopology: true,
    useNewUrlParser: true,        
}    

mongoose.set('strictQuery', false);
mongoose.connect(dbURI, options)
    .then(() => console.log('MongoDB Connected'))
    .catch(err => console.log(err))
xesrikrc

xesrikrc2#

const options = {
  autoIndex: false, // Don't build indexes
  maxPoolSize: 10, // Maintain up to 10 socket connections
  serverSelectionTimeoutMS: 5000, // Keep trying to send operations for 5 seconds
  socketTimeoutMS: 45000, // Close sockets after 45 seconds of inactivity
  family: 4 // Use IPv4, skip trying IPv6
};
mongoose.connect(uri, options)

根据官方Mongoose文件,这些是选项对象。

相关问题