1

Can't do requests to MongoDB Atlas DB from my node app which deployed to Heroku. It works good on my localhost, but it is some problems with production.

I added my connection URI to config vars in Heroku :

MONGODB_URI mongodb+srv://asd:asdasd@cluster0-rdame.mongodb.net/myDb?retryWrites=true&w=majority

const MongoClient = require("mongodb").MongoClient;
 const client = await new MongoClient(process.env.MONGODB_URI,{ useNewUrlParser: true});
 client.connect();
mongoose.connection.once('open', () => { console.log('MongoDB Connected'); });
mongoose.connection.on('error', (err) => { console.log('MongoDB connection error: ', err); });

When I do some get or post requests console gives me this:

2019-08-08T08:32:02.811420+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/branches" host=mighty-sierra-48879.herokuapp.com request_id=0b3c6788-644b-4d9c-87ac-49edee07ba1c fwd="109.75.35.153" dyno=web.1 connect=1ms service=30000ms stat us=503 bytes=0 protocol=https

Dvyn Resh
  • 980
  • 1
  • 6
  • 14
Smbat Poghosyan
  • 719
  • 7
  • 20

1 Answers1

0

Ok, I found a solution. It didn't connect to db because my code was wrong

I write

mongoose.connect(process.env.MONGODB_URI, {useNewUrlParser: true});
const conn = mongoose.connection;
mongoose.connection.once('open', () => { console.log('MongoDB Connected'); });
mongoose.connection.on('error', (err) => { console.log('MongoDB connection error: ', err); }); 

instead of:

const MongoClient = require("mongodb").MongoClient;
 const client = await new MongoClient(process.env.MONGODB_URI,{ useNewUrlParser: true});
 client.connect();
mongoose.connection.once('open', () => { console.log('MongoDB Connected'); });
mongoose.connection.on('error', (err) => { console.log('MongoDB connection error: ', err); }); 

and all work good

Smbat Poghosyan
  • 719
  • 7
  • 20