Setup MongoDB in Node.js with Mongoose
Posted on 23rd May 2019
3 min read•
Chances are if you’re building an application with Node, you’ll be needing to connect it to a MongoDB database. Here I’ll show you how to set it up. This guide assumes that you have already initialized a node project.
If you don’t have a database already mLab is probabaly the best place to get a free one.
Setting up database connection
First let’s install the mongoose dependency.
Or with yarn.
Then we will create a file with the database configuration and instance as
First let import the dependency;
Then let’s store the path of the database in a variable. The path should look like the following, with dbuser and dbpassword being replaced with a user you have created for the database.
After that we’ll connect to the database.
We’ll need to export this instance of the database to be used later.
Once the application is started, it would be better if there was an indicator showing whether the application successfully connected to the database or not. So let’s add some more code to fix that.
In the end the database.js should look like this.
Setting up models/schema
After setting up the database connection, let’s setup an entity model to save and retrieve. For this example in going with an User entity. It will have three fields, name, email and password. We’ll store all the models in the models folder.
A couple of notes here. The structure of the schema is defined in the schema constant. Each property should have a type field. The required field is to set whether the property is mandatory or not. In the above example all three properties are. The password property has an extra select field set to true. This is to make sure the password property is not returned by default when querying.
That’s all the setup you need to start using the database. Below are some examples on how the Model can be used.
I hope you found this tutorial useful in setting up a MongoDB database for your Node application. 😊
If you enjoyed this post please leave a like or two below!!!