1. Introduction:
MongoDB is one of the most popular NoSQL open source databases known by C ++. As of February 2015, MongoDB is ranked fourth among the most popular database systems. It was developed by 10gen company later known as MongoDB Inc.
MongoDB is a document-oriented database, which stores data in JSON documents with dynamic schema very flexibly. This means that you can save records without worrying about the data structure such as the number of fields or type of storage field. MongoDB documents are similar to JSON objects.
In MongoDB, data is stored as a document, a set of key-value pairs. You can define multiple databases in MongoDB and each database has many collections, these collections are simply a collection of documents stored as key-value pairs.
2. Connect with MongoDB:
- Install Mongoose
- Install mongodb
- Set up mongod if you don’t know (read this article)
- Make sure mongodb is running with the localhost server
3. Create a schema:
MongoDB is a document database, it stores JSON as objects. The model / schema describes what these objects contain.
The schema describes the fields we have in the form and specifies the data it expects
Example 1 model as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <span class="token keyword">var</span> mongoose <span class="token operator">=</span> <span class="token function">require</span> <span class="token punctuation">(</span> <span class="token string">'mongoose'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> uniqueValidator <span class="token operator">=</span> <span class="token function">require</span> <span class="token punctuation">(</span> <span class="token string">'mongoose-unique-validator'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> UserSchema <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">mongoose <span class="token punctuation">.</span> Schema</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> username <span class="token punctuation">:</span> <span class="token punctuation">{</span> type <span class="token punctuation">:</span> String <span class="token punctuation">,</span> unique <span class="token punctuation">:</span> <span class="token boolean">true</span> <span class="token punctuation">,</span> index <span class="token punctuation">:</span> <span class="token boolean">true</span> <span class="token punctuation">,</span> required <span class="token punctuation">:</span> <span class="token punctuation">[</span> <span class="token boolean">true</span> <span class="token punctuation">,</span> <span class="token string">"can't be blank"</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> match <span class="token punctuation">:</span> <span class="token punctuation">[</span> <span class="token regex">/^[a-zA-Z0-9]+$/</span> <span class="token punctuation">,</span> <span class="token string">'is invalid'</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> minlength <span class="token punctuation">:</span> <span class="token punctuation">[</span> <span class="token number">6</span> <span class="token punctuation">,</span> <span class="token string">"username more than 6 degits"</span> <span class="token punctuation">]</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> email <span class="token punctuation">:</span> <span class="token punctuation">{</span> type <span class="token punctuation">:</span> String <span class="token punctuation">,</span> lowercase <span class="token punctuation">:</span> <span class="token boolean">true</span> <span class="token punctuation">,</span> unique <span class="token punctuation">:</span> <span class="token boolean">true</span> <span class="token punctuation">,</span> required <span class="token punctuation">:</span> <span class="token punctuation">[</span> <span class="token boolean">true</span> <span class="token punctuation">,</span> <span class="token string">"can't be blank"</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> match <span class="token punctuation">:</span> <span class="token punctuation">[</span> <span class="token regex">/ <a class="__cf_email__" href="/cdn-cgi/l/email-protection">[email protected]</a> S+.S+/</span> <span class="token punctuation">,</span> <span class="token string">'is invalid'</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> index <span class="token punctuation">:</span> <span class="token boolean">true</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> sex <span class="token punctuation">:</span> String <span class="token punctuation">,</span> firstName <span class="token punctuation">:</span> String <span class="token punctuation">,</span> lastName <span class="token punctuation">:</span> String <span class="token punctuation">,</span> birthday <span class="token punctuation">:</span> Date <span class="token punctuation">,</span> image <span class="token punctuation">:</span> String <span class="token punctuation">,</span> isDelete <span class="token punctuation">:</span> Boolean <span class="token punctuation">,</span> createBy <span class="token punctuation">:</span> String <span class="token punctuation">,</span> updateBy <span class="token punctuation">:</span> String <span class="token punctuation">,</span> hash <span class="token punctuation">:</span> String <span class="token punctuation">,</span> salt <span class="token punctuation">:</span> String <span class="token punctuation">,</span> notes <span class="token punctuation">:</span> String <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> timestamps <span class="token punctuation">:</span> <span class="token boolean">true</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> UserSchema <span class="token punctuation">.</span> <span class="token function">plugin</span> <span class="token punctuation">(</span> uniqueValidator <span class="token punctuation">,</span> <span class="token punctuation">{</span> message <span class="token punctuation">:</span> <span class="token string">'is already taken.'</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> mongoose <span class="token punctuation">.</span> <span class="token function">model</span> <span class="token punctuation">(</span> <span class="token string">'User'</span> <span class="token punctuation">,</span> UserSchema <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
Here we can specify the validation for the model data, as you can see in the usernam I have specified it as required, only alphanumeric is allowed, and the minlength must be 6 characters for example.
4.Insert the data into MongoDB:
- Add middleware body-parser to parse the body of requests to the server
- Create a POST route for sending data to the server
- Stored values and stored in db with schema
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <span class="token keyword">let</span> <span class="token function-variable function">registerUser</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> user <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">let</span> newUser <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">dbUser</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">let</span> encryptResult <span class="token operator">=</span> <span class="token function">encryptPassword</span> <span class="token punctuation">(</span> user <span class="token punctuation">.</span> password <span class="token punctuation">)</span> <span class="token punctuation">;</span> newUser <span class="token punctuation">.</span> username <span class="token operator">=</span> user <span class="token punctuation">.</span> username <span class="token punctuation">;</span> newUser <span class="token punctuation">.</span> email <span class="token operator">=</span> user <span class="token punctuation">.</span> email <span class="token punctuation">;</span> newUser <span class="token punctuation">.</span> sex <span class="token operator">=</span> <span class="token constant">CONSTANTS</span> <span class="token punctuation">.</span> <span class="token constant">SEX</span> <span class="token punctuation">.</span> <span class="token constant">MALE</span> <span class="token punctuation">;</span> newUser <span class="token punctuation">.</span> firstName <span class="token operator">=</span> user <span class="token punctuation">.</span> firstName <span class="token punctuation">;</span> newUser <span class="token punctuation">.</span> lastName <span class="token operator">=</span> user <span class="token punctuation">.</span> lastName <span class="token punctuation">;</span> newUser <span class="token punctuation">.</span> birthday <span class="token operator">=</span> user <span class="token punctuation">.</span> birthday <span class="token punctuation">;</span> newUser <span class="token punctuation">.</span> image <span class="token operator">=</span> user <span class="token punctuation">.</span> image <span class="token punctuation">;</span> newUser <span class="token punctuation">.</span> notes <span class="token operator">=</span> user <span class="token punctuation">.</span> notes <span class="token punctuation">;</span> newUser <span class="token punctuation">.</span> isDelete <span class="token operator">=</span> <span class="token boolean">true</span> <span class="token punctuation">;</span> newUser <span class="token punctuation">.</span> createBy <span class="token operator">=</span> user <span class="token punctuation">.</span> createBy <span class="token punctuation">;</span> newUser <span class="token punctuation">.</span> updateBy <span class="token operator">=</span> user <span class="token punctuation">.</span> updateBy <span class="token punctuation">;</span> newUser <span class="token punctuation">.</span> salt <span class="token operator">=</span> encryptResult <span class="token punctuation">.</span> salt <span class="token punctuation">;</span> newUser <span class="token punctuation">.</span> hash <span class="token operator">=</span> encryptResult <span class="token punctuation">.</span> hash <span class="token punctuation">;</span> <span class="token keyword">return</span> newUser <span class="token punctuation">.</span> <span class="token function">save</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
5. Select data from MongoDB:
1 2 3 4 | <span class="token keyword">let</span> <span class="token function-variable function">getUserById</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> id <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> dbUser <span class="token punctuation">.</span> <span class="token function">findById</span> <span class="token punctuation">(</span> id <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
6. Update MongoDB data:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <span class="token keyword">let</span> <span class="token function-variable function">updateUser</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> req <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> dbUser <span class="token punctuation">.</span> <span class="token function">findById</span> <span class="token punctuation">(</span> req <span class="token punctuation">.</span> payload <span class="token punctuation">.</span> id <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">then</span> <span class="token punctuation">(</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> user <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// only update fields that were actually passed...</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">typeof</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> username <span class="token operator">!==</span> <span class="token string">'undefined'</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> user <span class="token punctuation">.</span> username <span class="token operator">=</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> username <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">typeof</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> email <span class="token operator">!==</span> <span class="token string">'undefined'</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> user <span class="token punctuation">.</span> email <span class="token operator">=</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> email <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">typeof</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> sex <span class="token operator">!==</span> <span class="token string">'undefined'</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> user <span class="token punctuation">.</span> sex <span class="token operator">=</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> sex <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">typeof</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> firstName <span class="token operator">!==</span> <span class="token string">'undefined'</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> user <span class="token punctuation">.</span> firstName <span class="token operator">=</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> firstName <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">typeof</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> lastName <span class="token operator">!==</span> <span class="token string">'undefined'</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> user <span class="token punctuation">.</span> lastName <span class="token operator">=</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> lastName <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">typeof</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> birthday <span class="token operator">!==</span> <span class="token string">'undefined'</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> user <span class="token punctuation">.</span> birthday <span class="token operator">=</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> birthday <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">typeof</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> isDelete <span class="token operator">!==</span> <span class="token string">'undefined'</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> user <span class="token punctuation">.</span> isDelete <span class="token operator">=</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> isDelete <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">typeof</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> notes <span class="token operator">!==</span> <span class="token string">'undefined'</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> user <span class="token punctuation">.</span> notes <span class="token operator">=</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> notes <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">typeof</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> image <span class="token operator">!==</span> <span class="token string">'undefined'</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> user <span class="token punctuation">.</span> image <span class="token operator">=</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> image <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">typeof</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> password <span class="token operator">!==</span> <span class="token string">'undefined'</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">let</span> encryptResult <span class="token operator">=</span> <span class="token function">encryptPassword</span> <span class="token punctuation">(</span> req <span class="token punctuation">.</span> body <span class="token punctuation">.</span> user <span class="token punctuation">.</span> password <span class="token punctuation">)</span> <span class="token punctuation">;</span> user <span class="token punctuation">.</span> salt <span class="token operator">=</span> encryptResult <span class="token punctuation">.</span> salt <span class="token punctuation">;</span> user <span class="token punctuation">.</span> hash <span class="token operator">=</span> encryptResult <span class="token punctuation">.</span> hash <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> user <span class="token punctuation">.</span> <span class="token function">save</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> |