Question

Node.js & Mongodb - Dont receive any data from the database droplet

Hi, i hope one of you can help me out with this question. I recently created 2 droplets. One of them are containing my node express application and the other is containing my MongoDB database version 3.4.2. My problem is that i can see my node application is connecting to my database, but it is not receiving any data back. When i try to load a page with data from the database, it just gives me an error. I use mongoose to connect to my database droplet.

Setup: Node.js: I have set this up with mongoose to connect to my database droplet and i have allowed my database droplets ip in the UFW to “Allow In” anywhere. For my node express i am using Nginx as well.

MongoDB: My mongo droplet is setup with version 3.4.2, and when i run netstat -anp i can see the following:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 xx.xxx.xxx.xx:27017     0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -               
tcp        0      0 database_droplet_ip:27017     node_droplet_ip:53274    ESTABLISHED -               
tcp        0      0 database_droplet_ip:22        node_droplet_ip:43929    ESTABLISHED -               
tcp6       0      0 :::22                   :::*                    LISTEN      -     

So for me it looks like my node application is connecting to the database droplet, but as soon as i try to get any data from the database, i just receive an error. My mongoose string is the following: mongoose.connect("mongodb://username:password@database_ip:27017/database_name?authSource=admin", {useNewUrlParser: true });

In the database i haven’t made any database, cause that is being created by itself, right? So if i write cucumber in the mongoose string, then it creates the database if it doesn’t exist. But in the database i only have admin and local. If i connect the node application to for example mongodb atlas, it connects without any problems.

The UFW on my node application looks like the following:

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
27017                      ALLOW       node_ip            
Nginx Full                 ALLOW       Anywhere                  
Anywhere                   ALLOW       mongodb_ip             
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx Full (v6)            ALLOW       Anywhere (v6)  

and the UFW on my mongo droplet look like:

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
27017                      ALLOW       node_ip            
OpenSSH (v6)               ALLOW       Anywhere (v6) 

The MongoDB conf looks like the following:

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1,mongodroplet_ip


#processManagement:

security:
  authorization: "enabled"

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

(I have checked that mongo is actually running)

I hope that one of you will be able to help me with this, since i have spend days trying to figure this out. As a last information, it is IPv4 addresses i am using and not IPv6. At my domain provider i have setup A and AAAA for both IPv4 and IPv6 to the domain. I can easily access the application by typing the domain, but not get the data from the database. To install the database droplet i have followed the initial server setup and install and secure mongodb article from digitalocean.


Submit an answer


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Accepted Answer

I solved this myself. It was actually a silly error. Apparently i assigned the wrong role to the database user. After i gave it role “root” instead, everything worked perfectly.

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.