Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正确连接到mongodb.atlas?MongoNetworkError_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript 如何正确连接到mongodb.atlas?MongoNetworkError

Javascript 如何正确连接到mongodb.atlas?MongoNetworkError,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我正在学习如何将MongoDB与node.js一起使用,因此我正在制作一个restful API作为实践 但每当我尝试连接到atlas for mongo时,总是会收到“MongoneWorkError:getaddrinfo ENOTFOUND” 我的代码位于server.js: //调用包 var bodyParser=require('body-parser'); var Bear=需要('./应用程序/模型/熊'); var mongoose=require('mongoose'); v

我正在学习如何将MongoDB与node.js一起使用,因此我正在制作一个restful API作为实践

但每当我尝试连接到atlas for mongo时,总是会收到“MongoneWorkError:getaddrinfo ENOTFOUND”

我的代码位于
server.js

//调用包
var bodyParser=require('body-parser');
var Bear=需要('./应用程序/模型/熊');
var mongoose=require('mongoose');
var express=需要(“express”);
var-app=express();
const MongoClient=require('mongodb')。MongoClient;
const uri=“mongodb://:@cluster0-.mongodb.net/test?retryWrites=true&w=maist”;
const client=newmongoclient(uri,{useNewUrlParser:true});
client.connect(err=>{
控制台日志(err);
//const collection=client.db(“测试”).collection(“设备”);
client.close();
});
/*代码的其余部分被注释掉了*/
...
它记录以下错误:

{ 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)]: {} }
{MongoNetworkError:在第一次连接时未能连接到服务器[cluster0-.mongodb.net:27017][MongoNetworkError:getaddrinfo ENOTFOUND cluster0-.mongodb.net:27017]
在池中。(/app/node_modules/mongodb core/lib/topologies/server.js:431:11)
在Pool.emit(events.js:198:13)
在connect(/app/node_modules/mongodb core/lib/connection/pool.js:557:14)
在makeConnection(/app/node_modules/mongodb core/lib/connection/connect.js:39:11)
回调时(/app/node_modules/mongodb core/lib/connection/connect.js:261:5)
位于Socket.err(/app/node_modules/mongodb core/lib/connection/connect.js:286:7)
在Object.onceWrapper(events.js:286:20)
在Socket.emit(events.js:198:13)
在发射时出错(内部/streams/destroy.js:91:8)
在emitErrorAndCloseNT(内部/streams/destroy.js:59:3)
在进程中。_tick回调(内部/process/next_tick.js:63:19)
名称:“MongoNetworkError”,
errorLabels:['TransientTransactionError'],
[符号(mongoErrorContextSymbol)]:{}
注:

  • 相应地表示字符
  • 我在笔记本电脑和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")
})
猫鼬。连接返回承诺。如果出现错误,连接将被拒绝,它将记录错误,然后退出进程。如果连接成功,则表示承诺已解决,因此它将连接,然后将记录“连接到Mongo Atlas”

但是,我建议您检查您的连接字符串。它应该有“+srv”,类似这样的东西

  mongodb+srv://

谢谢,我也犯了一个错误,没有将我的IP地址添加到白名单中