为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用 Mongoose 连接到 MongoDB

无法使用 Mongoose 连接到 MongoDB

蛊毒传说 2023-01-06 09:34:31

我正在观看有关 MERN 堆栈的视频教程,但由于某些非常奇怪的原因,我无法连接到 MongoDB。这个问题让我很沮丧,因为我可能只是遗漏了一些非常基本的东西,所以如果答案对你来说很明显,请原谅我。

该视频使用 mlab for MongoDB,它不再可用,所以我改用 MongoDB Atlas。我应该用来将我的应用程序连接到数据库的密钥是:

mongodb+srv://<username>:<password>@fs-shopping-list.6rzkd.mongodb.net/<dbname>?retryWrites=true&w=majority

我的密码没有任何特殊字符,我的IP地址在白名单中。至于dbname,我有一个名为“data”的数据库和一个名为“items”的集合,所以我使用“data”作为dbname.

导致我的问题的相关代码在一个名为的文件中server.js

const db = require('./config/keys').mongoURI; // I keep my key in a separate file in the way shown in the video


// Connect to MongoDB

mongoose

    .connect(db, { useNewUrlParser: true, useUnifiedTopology: true })

    .then(() => console.log('MongoDB connected.'))

    .catch(err => console.log(err));

当我尝试运行服务器时,我不断收到此错误(我从一些路径中删除了我的名字):


{ MongooseServerSelectionError: bad auth Authentication failed.

    at NativeConnection.Connection.openUri (/fs_shopping_list/node_modules/mongoose/lib/connection.js:828:32)

    at Mongoose.connect (/fs_shopping_list/node_modules/mongoose/lib/index.js:335:15)

    at Object.<anonymous> (/fs_shopping_list/server.js:15:6)

    at Module._compile (internal/modules/cjs/loader.js:689:30)

    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)

    at Module.load (internal/modules/cjs/loader.js:599:32)

    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)

    at Function.Module._load (internal/modules/cjs/loader.js:530:3)

    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)

    at startup (internal/bootstrap/node.js:283:19)

    at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)

  message: 'bad auth Authentication failed.',

  reason:

   TopologyDescription {

     type: 'ReplicaSetNoPrimary',

     setName: null,

     maxSetVersion: null,

     maxElectionId: null,

     servers:

有人可以帮我找出我做错了什么,以便我可以继续教程吗?感谢您的时间。



查看完整描述

2 回答

?
BIG阳

TA贡献0条经验 获得超6个赞

这是我如何使用的示例mongoose:


const connectToMongo = async () => {

  try {

    await mongoose.connect(mongoUrl, { useNewUrlParser: true });

    console.log('connected to MongoDB');

  } catch(error) {

    console.log('error connection to MongoDB:', error.message);

  }

};

这是一个例子mongoUrlmongo+srv://username:password@cluster0-ipl5c.mongodb.net/collectionname?retryWrites=true

确保您创建一个用户来读取和写入不是管理员帐户的数据库。您从“连接”按钮获得的 URI 字符串可能使用管理员帐户,即使这不是您想要在 URI 字符串中使用的帐户,因此请记住这一点。如果您这样做了但仍然无法连接,请使用此清单:

//img2.sycdn.imooc.com/63b77acf0001cd6b18190422.jpg

//img1.sycdn.imooc.com/63b77ad70001c1a418370456.jpg

//img1.sycdn.imooc.com/63b77ade0001829306720536.jpg

查看完整回答
反对 回复 2023-01-06
?
小怪兽爱吃肉

TA贡献1614条经验 获得超1个赞

尝试添加dbName选项:

await mongoose.connect('mongodb://root:example@mongo:27017', { dbName: "blog" });


查看完整回答
反对 回复 2023-01-06
  • 2 回答
  • 0 关注
  • 12 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信