Connxion无法连接到MongoDB Atlas服务器

时间:2019-05-22 08:11:11

标签: node.js mongodb mongoose mongodb-atlas

我试图连接到我刚刚创建的mongodb地图集,但出现此错误:

  

{MongoError:首次连接[MongoError:getaddrinfo ENOTFOUND mongodbarcode-tt80c.mongodb.net mongodbarcode-tt80c.mongodb.net:27017]时,无法连接到服务器[mongodbarcode-tt80c.mongodb.net:27017]

这是我的代码:

import mongoose from 'mongoose';
import config from '../config/index';

mongoose.Promise = global.Promise;

const connectToDb = async () => {
    try {
        await mongoose.connect(mongodb://test:fakepass@mongodbarcode-tt80c.mongodb.net/test?retryWrites=true, { useMongoClient: true });
       console.log('Connected to mongo!!!');
    }
    catch (err) {
        console.log(err);
       // logger.error('Could not connect to MongoDB');
    }
}

export default connectToDb;

另外,我添加了一个白名单IP地址:0.0.0.0/0,可以从任何地方进行连接,但是我总是会遇到相同的错误,请问有什么建议吗?

1 个答案:

答案 0 :(得分:-1)

您需要从此处本地安装MongoDB服务:https://www.mongodb.com/download-center/community?jmp=docs

或者您可以从此处在云上使用猫鼬:https://www.mongodb.com/cloud/atlas

这2个解决方案为我解决了这个问题。 哟先做准备:

const mongoose = require('mongoose');
const url = 'mongodb+srv://user:password@cluster0-dkgsi.mongodb.net/test?retryWrites=true&w=majority';

const mongoOptions = {useNewUrlParser:true, useUnifiedTopology: true};

//this will start things from scratch
const state = {
    db : null
};

然后您以这种方式进行连接: 网址是您在mongo地图集上建立帐户后得到的。

const connect = (cb) => {
    if(state.db){
       cb();
   }else {

    mongoose.connect(url ,mongoOptions, (err, client) => {
        if(err)
            cb(err);
         else{

            cb();
         }  
    });

   }

};

然后调用connect函数:

connect( (err)=>{
    if (err){
        console.log('failed to connect to the db');
        console.log(err);
        process.exit(1);
    } else {
        app.listen(3000, () =>{
            console.log("connected, App listeining on port 3000");
        }

        );
    }
}

);