Connecting our ExpressJs/Vue3 App to a Mongoose Database
A starter example tutorial for connecting ExpressJs to a Mongoose database hosted on MongoDB.
Prerequisites
Here's what you will need in order to get started:
- Setup a MongoDB account to host your database.
- We will continue on the simple starter Vue3/ExpressJS app from our prior post.
Getting Started
First, let's clone our prior Vue3/ExpressJS app and rename it. Run the following:
git clone git@github.com:Initial-Apps/vue3-express.git vue3-express-mongoNow, let's move into our app and install our modules on our server:
cd vue3-express-mongo/server
npm installNext, let's start the server to make sure all is working. Run the following:
node server.jsSetting up MongoDB
Login to your MongoDB account: https://cloud.mongodb.com/
Select New Project and name your project. You can add members if you like. Then click Create Project.
Next, continue to Build a Database.
Select whatever plan you like and click create.
Next, create a username and password for your database, and be sure to save this info.
Then, select connect from My Local Environment (see below):
Finally, select Finish and Close. Hooray, we've setup our database! 🤓
Connecting ExpressJs to our MongoDB
Now let's work on our server to connect ExpressJs to MongoDB. To do this, we'll work on our server middleware file server/server.js. Let's open this file and get to work.  
I'm adding the following code to server.js just after defining our imported modules. I've added code comments as well.
require('dotenv').config(); // needed to read our environment variables
const mongoose = require('mongoose');  // We need the mongoose module
const connectString = process.env.MONGODB;  // This holds our username and password, stored as a environment variable
mongoose.connect(connectString, { useNewUrlParser: true }).then(
  () => { 
    console.log ('Succeeded connected to database');
   },
  err => { 
    console.log ('ERROR connecting to database: ' + err);
   }
);Here's what the above code does:
- Adds the dotenvmodule so that we can store our MongoDB username and password as an environment variable. This is preferred over placing this sensitive information directly in your code.
- Adds the mongoosemodule for connecting to our MongoDB database
- The connectStringvariable will hold our login credentials for MongoDB. We'll set this up next.
- Finally, we add the connect script to connect to our DB.
Next, we have to setup our login and password for MongoDB as an environment variable.  You do not want to ever share this file because it has sensitive login information.  That said, I've created a example_env.txt file in our github repo to provide template.  
We make sure our environment credentials are hidden by opening your .gitignore file, adding the following to the end of the file and save:
# env files
.envNext, we'll get our connect string from MongoDB. You can find your connect string format on your MongoDB dashboard.  Click connect and then connect by Drivers.
We are going to add our key using mongoose so we only need to pay attention to the Driver and the Connection String.
Select Node for the Driver like so:
Then copy and paste your Connection String:
Now create a file named .env and add your connect URL. The contents of the file should look something like this (replacing <username> and <password> with the MongoDB username and password we created in the last section). Save the file once this is added.
MONGODB=mongodb+srv://<username>:<password>@cluster0.ltkorue.mongodb.net/?retryWrites=true&w=majorityThen we install the modules we need for the connection.  From the terminal window that we used to run our node server (the one that we ran node server.js).  First stop the server (hit ctrl+c).  Now install the modules:
npm install mongoose dotenvNow we can restart our server by running:
node server.jsIf all runs properly, you should see the following on your console:
Congrats as you are now connected to your database!
What's Next
Next, we need to start using your new database for various data! Want to see how we do that? Stay tuned or subscribe as we continue this app.