簡體   English   中英

將貓鼬連接到 mongoDB 圖集和 nodejs

[英]connecting mongoose to mongoDB atlas and nodejs

這是我的貓鼬連接代碼:

mongoose.connect("mongodb+srv://Sarthak:*******:Wb@cluster0-jli2a.mongodb.net/test?retryWrites=true",{ useNewUrlParser: true })
    .then(()=>{
        console.log("Connected to mongo database");
    })
    .catch((err)=>{
        console.log("Error connecting mongo database",err);
    });

我收到以下錯誤,知道如何解決這個問題嗎?

錯誤連接 mongo 數據庫 { MongoParseError: Unescaped Colon in authority 部分 parseConnectionString (/home/sarthak/Projects/thePracticalGuide/node_modules/mongodb-core/lib/uri_parser.js:250:23) at QueryReqWrap.dns.resolveTxt [作為回調] (/home/sarthak/Projects/thePracticalGuide/node_modules/mongodb-core/lib/uri_parser.js:126:7) 在 QueryReqWrap.onresolve [as oncomplete] (dns.js:240:10) 名稱:'MongoParseError', [符號(mongoErrorContextSymbol)]:{}}

這是我在連接時遇到的錯誤

只需轉到 atlas 網站安全選項卡並編輯用戶的密碼,並確保您不使用“@”或“:”。 就是這樣。

您需要在連接字符串中對密碼進行編碼:

const connectionString = `mongodb://yourUsername:${encodeURIComponent('yourPassword')}@127.0.0.1:27017/mydb`;

錯誤描述非常清楚 - 您的密碼中有冒號嗎? 典型的連接字符串格式是“mongodb+srv:[username:password@]host1...”,因此未轉義的冒號會引發解析錯誤。

我也有同樣的問題,即使它們很明顯地被轉義,也有“未轉義的冒號”。 嘗試這個:

var uri = encodeURI('mongodb+srv://Sarthak:*******:Wb@cluster0-jli2a.mongodb.net/test?retryWrites=true');

也嘗試使用這種連接方式

 /* I've removed the ":Wb" between your password and @clus... As mongoDB atlas website didn't use that in my generated connection string */
  mongoose.connect("mongodb+srv://Sarthak:*******@cluster0-jli2a.mongodb.net/test?retryWrites=true",{ useNewUrlParser: true });    

  mongoose.connection.on('error', (err) => {
    console.error(`Mongoose connection error: ${err}`);
    process.exit(1);
  });

否則需要考慮的事情:

  • 確保您已將連接設備 IP 地址添加到 mongoDB atlas 網站集群安全分接頭的 IP 白名單中(如果您已經這樣做了,您可以嘗試通過添加 0.0.0.0/0 來授予每個 IP 的權限檢查沒有問題)
  • 關於密碼,您可能會混淆 mongoDB atlas 登錄密碼,而不是您為集群創建的用戶(這是 mongoDB atlas 新手常犯的錯誤)。
  • 如果沒有並且您使用了正確的密碼,您可以嘗試刪除用戶並在安全選項卡中重新創建它(在 mongoDB atlas 網站的集群視圖中)。 首先考慮給用戶一個沒有任何特殊字符的非常基本的密碼,然后再次嘗試連接以確保它不是編碼問題。
  • 最后,如果以上都不適合您,請嘗試通過 shell 進行連接。 (您可以在 mongoDB atlas 網站的連接字符串中看到集群的連接部分。在那里您可以獲得關於問題原因的更好的日志。

輸入連接字符串時,我使用 MongoDB Compass 獲得了“授權部分中未轉義的冒號”

其中——

我進入“創建免費集群”按鈕並創建了一個集群。

然后我得到了連接字符串。 但是,在輸入可用連接字符串時出現錯誤。

我只是通過登錄 mongodb atlas 更改了密碼。

這是我使用的程序-->

 [1]  To change the password - click on encode URI

在此處輸入圖片說明

 [2]   It will take you here -->

在此處輸入圖片說明

  [3]   Click on the edit button from the screen above and change your password.

在此處輸入圖片說明

我按照上述步驟操作,並且能夠登錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM