簡體   English   中英

如何正確連接到 mongodb.atlas? Mongo網絡錯誤

[英]how to properly connect to mongodb.atlas? MongoNetworkError

我正在學習如何在 node.js 中使用 MongoDB,所以我正在制作一個 restful-API 作為練習。

但是每當我嘗試連接到 mongo 的地圖集時,我都會收到“MongoNetworkError:getaddrinfo ENOTFOUND”。

我在server.js代碼:

// call the packages
var bodyParser = require('body-parser');
var Bear = require('./app/models/bear');
var mongoose = require('mongoose');

var express = require('express');
var app = express();

const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb://<userName>:<pasword>@cluster0-<someCharacters>.mongodb.net/test?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true });
client.connect( err => {
  console.log(err);
  //const collection = client.db("test").collection("devices");
  client.close();
});

/*rest of the code is commented out*/
...

它記錄以下錯誤:

{ MongoNetworkError: failed to connect to server [cluster0-<someCharacters>.mongodb.net:27017] on first connect [MongoNetworkError: getaddrinfo ENOTFOUND cluster0-<someCharacters>.mongodb.net cluster0-<someCharacters>.mongodb.net:27017]
at Pool.<anonymous> (/app/node_modules/mongodb-core/lib/topologies/server.js:431:11)
at Pool.emit (events.js:198:13)
at connect (/app/node_modules/mongodb-core/lib/connection/pool.js:557:14)
at makeConnection (/app/node_modules/mongodb-core/lib/connection/connect.js:39:11)
at callback (/app/node_modules/mongodb-core/lib/connection/connect.js:261:5)
at Socket.err (/app/node_modules/mongodb-core/lib/connection/connect.js:286:7)
at Object.onceWrapper (events.js:286:20)
at Socket.emit (events.js:198:13)
at emitErrorNT (internal/streams/destroy.js:91:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
at process._tickCallback (internal/process/next_tick.js:63:19)
name: 'MongoNetworkError',
errorLabels: [ 'TransientTransactionError' ],
[Symbol(mongoErrorContextSymbol)]: {} }

筆記:

  • <userName> , <pasword> , <someCharacters>表示字符
  • 我在筆記本電腦和 Heroku 中得到相同的結果
  • 如果在本地設置 mongodb,它可以在localhost上正常工作
  • 我直接從 cloud.mongodb.com 得到了連接字符串

我可能做錯了什么?

你安裝了 mongoose,但你正在嘗試連接 mongodb 包。 因為你安裝了貓鼬

const mongoUri="your connection string here"
mongoose.connect(mongoUri,{useNewUrlParser:true})
.catch((e)=>{
    console.log(e.message)
    process.exit(1)
})
.then(()=>{
    console.log("connected to Mongo Atlas")
})

mongoose.connect 返回承諾。 如果有錯誤,連接將被拒絕,它會記錄錯誤,然后退出進程。 如果連接成功,則表示 promise 已解決,因此它將連接,然后將記錄“已連接到 Mongo Atlas”

但是我建議您檢查您的連接字符串。 它應該有“+srv”,像這樣

  mongodb+srv://

暫無
暫無

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

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