【问题标题】:Mongo DB Atlas Mongoose credentials must be an objectMongodb Atlas Mongoose 凭据必须是一个对象
【发布时间】:2023-01-02 00:35:32
【问题描述】:

删除 Mongoose-package 并再次重新安装后,我遇到了一个错误。

我得到的错误似乎与Mongo DB Atlas instruction 上的说明冲突。在 dbURI 中放置用户名和密码的位置。

错误:

MongoParseError:凭据必须是具有“用户名”和“密码”属性的对象

这是我的连接:

 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, {user: 'tichel-admin', password: 'appeltaart'})
    .then(() => console.log('MongoDB Connected'))
    .catch(err => console.log(err))

该错误表示将用户名和密码放置到选项对象中

我使用 node v 19.3 和 Mongoose 6.8.2。

【问题讨论】:

  • 如果凭据在 dbUri 中,则您不必单独提供它们。如果从选项中删除 auth 属性并且不将第三个参数传递给 mongoose.connect(),会发生什么情况?

标签: node.js mongodb mongoose


【解决方案1】:

您不需要在 mongoose 的连接方法中指定用户名和密码,因为它已经插入到 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))

【讨论】:

    猜你喜欢
    • 2018-04-14
    • 2019-12-19
    • 2020-07-14
    • 2020-08-19
    • 2023-03-12
    • 2019-10-23
    • 1970-01-01
    • 2017-12-31
    • 2013-09-09
    相关资源
    最近更新 更多