DEV Community 👩‍💻👨‍💻

Kevin Lewis
Kevin Lewis

Posted on

Accessing MongoDB Atlas From Netlify Functions

I recently tried to use a MongoDB Atlas instance with Netlify Functions and couldn't seem to connect to the database (I could locally). Here's why, and how I fixed it

Cause of the problem

When setting up a MongoDB Atlas Cluster you must provide a list of allowed IPs - with a one-click button to enable your own machine.

During local development everything will work file, but when you push your functions to Netlify the IP address will no longer match the one in the allowed list.

Unfortunately, Netlify don't provide the IP range for the machines that run serverless functions (as is the very nature of serverless), so this led me down a rabbit hole.

It is a single button

After spending a couple of hours to find the solution, I discovered it was just a single button click. In 'Network Access' in your cluster settings click 'Add IP Address'.

Then click 'Allow Access From Anywhere' and confirm your changes.

Hopefully this short post can save you debugging time.

Top comments (10)

Collapse
 
mral_x profile image
Alex Ferreira

Thanks for this! It would've taken waaaaaay longer than it already did for me to get to this conclusion! 🙏

Collapse
 
_phzn profile image
Kevin Lewis Author

You’re very welcome!

Collapse
 
coisox profile image
Aizal Manan

What!!!!!!!!!! You really really really really save my time! After a very long journey. The should have make it as default and optionally allow to specify IP for better security.

Collapse
 
animeshsinghweb profile image
Animesh Singh

Saved time before hunting IP addresses!

Collapse
 
_phzn profile image
Kevin Lewis Author

I'm glad you are saved the time I spent doing the same 🤣

Collapse
 
iamother profile image
Andres Romaña

What if i only need access from my frontend application ?

Collapse
 
_phzn profile image
Kevin Lewis Author

You shouldn't be making requests directly to a database from the frontend, as it will provide folks with the credentials required to access your database.

Collapse
 
iamother profile image
Andres Romaña

So, how we show the data for the user? example fetching a table posts etc!! Do you have any docs link to read more about that !!

Thread Thread
 
_phzn profile image
Kevin Lewis Author

You can use a Netlify function for this. The finished flow would be something like:

  1. Your frontend makes a request to your Netlify function
  2. Your Netlify function accesses your database and retrieves posts
  3. Your Netlify functions does any necessary preparation of the data and responds to the request
  4. Your frontend receives a response from your Netlify function and can display them

Hope this helps

Collapse
 
borche profile image
Andreas Börjesson

Thanks for this info

🌚 Friends don't let friends browse without dark mode.

Sorry, it's true.