{"id":1105,"date":"2017-10-12T18:44:11","date_gmt":"2017-10-12T15:44:11","guid":{"rendered":"https:\/\/community.virtono.com\/?p=1105"},"modified":"2020-06-10T16:53:52","modified_gmt":"2020-06-10T13:53:52","slug":"mongoose","status":"publish","type":"post","link":"https:\/\/www.virtono.com\/community\/tutorial-how-to\/mongoose\/","title":{"rendered":"Mongoose"},"content":{"rendered":"<header class=\"entry-header\">\n<h3 id=\"seriesName\">Series:\u00a0Introduction to the MEAN Stack<\/h3>\n<ul id=\"seriesList\">\n<li><a href=\"https:\/\/wp.me\/p7ISfL-hs\" target=\"_blank\" rel=\"noopener\">Part 1: Definition of the MEAN stack<\/a><\/li>\n<li><a href=\"https:\/\/wp.me\/p7ISfL-hz\" target=\"_blank\" rel=\"noopener\">Part 2:\u00a0Setup of the MEAN stack<\/a><\/li>\n<li><a href=\"https:\/\/wp.me\/p7ISfL-hC\" target=\"_blank\" rel=\"noopener\">Part 3:\u00a0Node.js<\/a><\/li>\n<li><a href=\"https:\/\/wp.me\/s7ISfL-npm\" target=\"_blank\" rel=\"noopener\">Part 4:\u00a0npm<\/a><\/li>\n<li><a href=\"https:\/\/wp.me\/s7ISfL-connect\" target=\"_blank\" rel=\"noopener\">Part 5:\u00a0Connect<\/a><\/li>\n<li><a href=\"https:\/\/wp.me\/s7ISfL-express\" target=\"_blank\" rel=\"noopener\">Part 6:\u00a0Express<\/a><\/li>\n<li><a href=\"https:\/\/wp.me\/s7ISfL-mongodb\" target=\"_blank\" rel=\"noopener\">Part 7:\u00a0MongoDB<\/a><\/li>\n<li><a href=\"https:\/\/wp.me\/s7ISfL-mongodb\" target=\"_blank\" rel=\"noopener\">Part 8:\u00a0Mongoose<\/a><\/li>\n<li><a href=\"https:\/\/wp.me\/s7ISfL-rest\" target=\"_blank\" rel=\"noopener\">Part 9:\u00a0REST<\/a><\/li>\n<li><a href=\"https:\/\/wp.me\/s7ISfL-baucis\" target=\"_blank\" rel=\"noopener\">Part 10:\u00a0Baucis<\/a><\/li>\n<li><a href=\"https:\/\/wp.me\/s7ISfL-bower\" target=\"_blank\" rel=\"noopener\">Part 11:\u00a0Bower<\/a><\/li>\n<li><a href=\"https:\/\/wp.me\/p7ISfL-i1\" target=\"_blank\" rel=\"noopener\">Part 12:\u00a0AngularJS<\/a><\/li>\n<li><a href=\"https:\/\/wp.me\/p7ISfL-i4\" target=\"_blank\" rel=\"noopener\">Part 13:\u00a0Restangular<\/a><\/li>\n<\/ul>\n<\/header>\n<div class=\"entry-content\">\n<p>Mongoose\u00a0is a framework which is based on the\u00a0native MongoDB driver\u00a0and extends it with extensive modfunctions.\u00a0We revisit the example from the last chapter and formulate it in such a way that we get more structure in our documents.<br \/>\n<span id=\"more-3632\"><\/span><\/p>\n<p>The basis of Mongoose are\u00a0<strong>schemas<\/strong>\u00a0, which represent an abstract description of the documents in a collection.\u00a0Using schemas, fields in a document can be checked for a type, incoming data can be validated, and default values can be assigned.\u00a0It is also possible to use virtual fields, which can be used by the server, but which are not to be stored in the MongoDB database.\u00a0Another feature is freely definable\u00a0<strong>hooks<\/strong>\u00a0, special functions that are executed before or after an event (like saving a document).\u00a0As you can see Mongoose is quite extensive.\u00a0You can find the complete documentation\u00a0here\u00a0.<\/p>\n<p>Mongoose is installed via npm.\u00a0The latest version at the time of writing is 3.6.2.<\/p>\n<div>\n<div class=\"codecolorer-container powershell default\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"line-numbers\">\n<div>1<\/div>\n<\/td>\n<td>\n<div class=\"powershell codecolorer\">$ npm install mongoose<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Our previous example, written with Mongoose, looks like this:<\/p>\n<div class=\"codecolorer-container javascript default\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"line-numbers\">\n<div>1<br \/>\n2<br \/>\n3<br \/>\n4<br \/>\n5<br \/>\n6<br \/>\n7<br \/>\n8<br \/>\n9<br \/>\n10<br \/>\n11<br \/>\n12<br \/>\n13<br \/>\n14<br \/>\n15<br \/>\n16<br \/>\n17<br \/>\n18<br \/>\n19<br \/>\n20<br \/>\n21<br \/>\n22<br \/>\n23<\/div>\n<\/td>\n<td>\n<div class=\"javascript codecolorer\"><span class=\"kw2\">var<\/span>\u00a0mongoose\u00a0<span class=\"sy0\">=<\/span>\u00a0require\u00a0<span class=\"br0\">(\u00a0<\/span><span class=\"st0\">&#8216;mongoose&#8217;\u00a0<\/span><span class=\"br0\">)\u00a0<\/span><span class=\"sy0\">;\u00a0<\/span><br \/>\nmongoose.\u00a0<span class=\"me1\">connect\u00a0<\/span><span class=\"br0\">(\u00a0<\/span><span class=\"st0\">&#8216;mongodb: \/\/ localhost: 27017 \/ first-db&#8217;\u00a0<\/span><span class=\"br0\">)\u00a0<\/span><span class=\"sy0\">;\u00a0<\/span><span class=\"kw2\">var<\/span>\u00a0VisitSchema\u00a0<span class=\"sy0\">=\u00a0<\/span><span class=\"kw2\">new<\/span>\u00a0mongoose.\u00a0<span class=\"me1\">Schema\u00a0<\/span><span class=\"br0\">(\u00a0<\/span><span class=\"br0\">{<\/span><br \/>\nurl\u00a0<span class=\"sy0\">:<\/span>\u00a0String\u00a0<span class=\"sy0\">,<\/span><br \/>\ntime\u00a0<span class=\"sy0\">:\u00a0<\/span><span class=\"br0\">{<\/span>\u00a0type\u00a0<span class=\"sy0\">:<\/span>\u00a0Date\u00a0<span class=\"sy0\">,\u00a0<\/span><span class=\"kw2\">default\u00a0<\/span><span class=\"sy0\">:<\/span>\u00a0Date.\u00a0<span class=\"me1\">Now\u00a0<\/span><span class=\"br0\">}\u00a0<\/span><br \/>\n<span class=\"br0\">}\u00a0<\/span><span class=\"br0\">)\u00a0<\/span><span class=\"sy0\">;\u00a0<\/span><br \/>\n<span class=\"kw2\">var<\/span>\u00a0Visit\u00a0<span class=\"sy0\">=<\/span>\u00a0mongoose.\u00a0<span class=\"me1\">model\u00a0<\/span><span class=\"br0\">(\u00a0<\/span><span class=\"st0\">&#8216;Visit&#8217;<\/span><span class=\"sy0\">,<\/span>\u00a0VisitSchema\u00a0<span class=\"br0\">)\u00a0<\/span><span class=\"sy0\">;\u00a0<\/span><\/p>\n<p><span class=\"kw2\">var<\/span>\u00a0express\u00a0<span class=\"sy0\">=<\/span>\u00a0require\u00a0<span class=\"br0\">(\u00a0<\/span><span class=\"st0\">&#8216;express&#8217;\u00a0<\/span><span class=\"br0\">)\u00a0<\/span><span class=\"sy0\">;\u00a0<\/span><br \/>\nexpress\u00a0<span class=\"br0\">(\u00a0<\/span><span class=\"br0\">)<\/span><br \/>\n.\u00a0<span class=\"me1\">get\u00a0<\/span><span class=\"br0\">(\u00a0<\/span><span class=\"st0\">&#8216;*&#8217;\u00a0<\/span><span class=\"sy0\">,\u00a0<\/span><span class=\"kw2\">function\u00a0<\/span><span class=\"br0\">(<\/span>\u00a0req\u00a0<span class=\"sy0\">,<\/span>\u00a0res\u00a0<span class=\"br0\">)\u00a0<\/span><span class=\"br0\">{<\/span><br \/>\nVisit.\u00a0<span class=\"me1\">create\u00a0<\/span><span class=\"br0\">(\u00a0<\/span><span class=\"br0\">{<\/span>\u00a0url\u00a0<span class=\"sy0\">:<\/span>\u00a0req.\u00a0<span class=\"me1\">url\u00a0<\/span><span class=\"br0\">}\u00a0<\/span><span class=\"sy0\">,\u00a0<\/span><span class=\"kw2\">function\u00a0<\/span><span class=\"br0\">(<\/span>\u00a0err\u00a0<span class=\"sy0\">,<\/span>\u00a0doc\u00a0<span class=\"br0\">)\u00a0<\/span><span class=\"br0\">{<\/span><br \/>\nVisit.\u00a0<span class=\"me1\">place\u00a0<\/span><span class=\"br0\">(\u00a0<\/span><span class=\"kw2\">function\u00a0<\/span><span class=\"br0\">(<\/span>\u00a0err\u00a0<span class=\"sy0\">,<\/span>\u00a0docs<span class=\"br0\">)\u00a0<\/span><span class=\"br0\">{\u00a0<\/span><br \/>\n<span class=\"kw2\">var<\/span>\u00a0log\u00a0<span class=\"sy0\">=\u00a0<\/span><span class=\"st0\">&#8221;\u00a0<\/span><span class=\"sy0\">;\u00a0<\/span><br \/>\ndocs.\u00a0<span class=\"me1\">forEach\u00a0<\/span><span class=\"br0\">(\u00a0<\/span><span class=\"kw2\">function\u00a0<\/span><span class=\"br0\">(<\/span>\u00a0doc\u00a0<span class=\"sy0\">,<\/span>\u00a0index\u00a0<span class=\"br0\">)\u00a0<\/span><span class=\"br0\">{<\/span><br \/>\nlog\u00a0<span class=\"sy0\">+ =\u00a0<\/span><span class=\"st0\">&#8216;Visited&#8217;\u00a0<\/span><span class=\"sy0\">+<\/span>\u00a0doc.\u00a0<span class=\"me1\">url\u00a0<\/span><span class=\"sy0\">+\u00a0<\/span><span class=\"st0\">&#8216;on&#8217;\u00a0<\/span><span class=\"sy0\">+<\/span>\u00a0doc.\u00a0<span class=\"me1\">time\u00a0<\/span><span class=\"sy0\">+\u00a0<\/span><span class=\"st0\">&#8216;in.&#8217;\u00a0<\/span><span class=\"sy0\">;\u00a0<\/span><br \/>\n<span class=\"br0\">}\u00a0<\/span><span class=\"br0\">)\u00a0<\/span><span class=\"sy0\">;\u00a0<\/span><br \/>\nres.\u00a0<span class=\"me1\">send\u00a0<\/span><span class=\"br0\">(<\/span>\u00a0log\u00a0<span class=\"br0\">)\u00a0<\/span><span class=\"sy0\">;\u00a0<\/span><br \/>\n<span class=\"br0\">}\u00a0<\/span><span class=\"br0\">)\u00a0<\/span><span class=\"sy0\">;\u00a0<\/span><br \/>\n<span class=\"br0\">}\u00a0<\/span><span class=\"br0\">)\u00a0<\/span><span class=\"sy0\">;\u00a0<\/span><br \/>\n<span class=\"br0\">}\u00a0<\/span><span class=\"br0\">)<\/span><br \/>\n.\u00a0<span class=\"me1\">listen\u00a0<\/span><span class=\"br0\">(\u00a0<\/span><span class=\"nu0\">1337\u00a0<\/span><span class=\"sy0\">,<\/span>\u00a0<span class=\"st0\">&#8216;127.0.0.1&#8217;\u00a0<\/span><span class=\"br0\">)\u00a0<\/span><span class=\"sy0\">;<\/span><\/p>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>In the third line we create a schema for our visits.\u00a0We specify that documents for the visits have two fields: a field\u00a0<code class=\"codecolorer javascript default\"><span class=\"javascript\">url<\/span><\/code>\u00a0of type\u00a0<code class=\"codecolorer javascript default\"><span class=\"javascript\">String<\/span><\/code>\u00a0and a field\u00a0<code class=\"codecolorer javascript default\"><span class=\"javascript\">time<\/span><\/code>\u00a0of type\u00a0<code class=\"codecolorer javascript default\"><span class=\"javascript\">Date<\/span><\/code>.\u00a0At the same time, we set\u00a0<code class=\"codecolorer javascript default\"><span class=\"javascript\">time<\/span><\/code>\u00a0a default value\u00a0for the field\u00a0.\u00a0This is automatically set when the field is empty when the document is saved.\u00a0Then, the abstract schema creates a so-called model, which provides an API for storing and finding documents (similar to the collection in the previous example).\u00a0The rest of the code behaves in the same way as the previous example.\u00a0In the middleware, we simply do not have to save the time of the visit explicitly since our schema takes over this task.<\/p>\n<p>Your result should look something like this:<\/p>\n<div id=\"attachment_3627\" class=\"wp-caption aligncenter\">\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\" wp-image-3627\" src=\"https:\/\/i0.wp.com\/www.senaeh.de\/wp-content\/uploads\/2013\/10\/127.0.0.1_1337_hi17-520x626.png?resize=312%2C376\" alt=\"\" width=\"312\" height=\"376\" \/><\/p>\n<p class=\"wp-caption-text\">Use of Mongoose<\/p>\n<\/div>\n<p>As you can see, the entries from the previous example have been preserved.\u00a0We finally use the same database!\u00a0Only the specification of the time has been formatted differently since we\u00a0\u00a0have defined\u00a0<code class=\"codecolorer javascript default\"><span class=\"javascript\">time<\/span><\/code>\u00a0the type\u00a0for the field\u00a0<code class=\"codecolorer javascript default\"><span class=\"javascript\">Date<\/span><\/code>and Mongoose pre-formatted the value accordingly.<\/p>\n<p>In the next article, I introduce you to the concept of\u00a0REST\u00a0.\u00a0With REST, we can later query and manipulate the data from our database via a client &#8211; the server serves as an intermediary between the client and the database.\u00a0This is a nice concept that combines all our technologies of the MEAN stack.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Series:\u00a0Introduction to the MEAN Stack Part 1: Definition of the MEAN stack Part 2:\u00a0Setup of the MEAN stack Part 3:\u00a0Node.js Part 4:\u00a0npm Part 5:\u00a0Connect Part 6:\u00a0Express Part 7:\u00a0MongoDB Part 8:\u00a0Mongoose Part 9:\u00a0REST Part 10:\u00a0Baucis Part 11:\u00a0Bower Part 12:\u00a0AngularJS Part 13:\u00a0Restangular Mongoose\u00a0is a framework which is based on the\u00a0native MongoDB driver\u00a0and<\/p>\n","protected":false},"author":4,"featured_media":1106,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[5,3],"tags":[],"class_list":["post-1105","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-knowledgebase","category-tutorial-how-to"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/mongoose.png?fit=370%2C200&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/s7ISfL-mongoose","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":1111,"url":"https:\/\/www.virtono.com\/community\/tutorial-how-to\/baucis\/","url_meta":{"origin":1105,"position":0},"title":"baucis","author":"Shreyash Sharma","date":"October 14, 2017","format":false,"excerpt":"Series:\u00a0Introduction to the MEAN Stack Part 1: Definition of the MEAN stack Part 2:\u00a0Setup of the MEAN stack Part 3:\u00a0Node.js Part 4:\u00a0npm Part 5:\u00a0Connect Part 6:\u00a0Express Part 7:\u00a0MongoDB Part 8:\u00a0Mongoose Part 9:\u00a0REST Part 10:\u00a0Baucis Part 11:\u00a0Bower Part 12:\u00a0AngularJS Part 13:\u00a0Restangular In today's article, we practically apply our theoretical knowledge about\u2026","rel":"","context":"In &quot;Knowledgebase&quot;","block_context":{"text":"Knowledgebase","link":"https:\/\/www.virtono.com\/community\/category\/knowledgebase\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/opensouthcode-microservicios-sobre-mean-stack-15-638.jpg?fit=638%2C359&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/opensouthcode-microservicios-sobre-mean-stack-15-638.jpg?fit=638%2C359&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/opensouthcode-microservicios-sobre-mean-stack-15-638.jpg?fit=638%2C359&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":1082,"url":"https:\/\/www.virtono.com\/community\/knowledgebase\/definition-of-the-mean-stack\/","url_meta":{"origin":1105,"position":1},"title":"Definition of the MEAN stack","author":"Shreyash Sharma","date":"October 9, 2017","format":false,"excerpt":"Series:\u00a0Introduction to the MEAN Stack Part 1: Definition of the MEAN stack Part 2:\u00a0Setup of the MEAN stack Part 3:\u00a0Node.js Part 4:\u00a0npm Part 5:\u00a0Connect Part 6:\u00a0Express Part 7:\u00a0MongoDB Part 8:\u00a0Mongoose Part 9:\u00a0REST Part 10:\u00a0Baucis Part 11:\u00a0Bower Part 12:\u00a0AngularJS Part 13:\u00a0Restangular In a new article series, I would like to\u00a0offer\u00a0you an\u2026","rel":"","context":"In &quot;Knowledgebase&quot;","block_context":{"text":"Knowledgebase","link":"https:\/\/www.virtono.com\/community\/category\/knowledgebase\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/Mean.jpg?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/Mean.jpg?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/Mean.jpg?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/Mean.jpg?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/Mean.jpg?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1089,"url":"https:\/\/www.virtono.com\/community\/tutorial-how-to\/setup-of-the-mean-stack\/","url_meta":{"origin":1105,"position":2},"title":"Setup of the MEAN stack","author":"Daniel Draga","date":"October 9, 2017","format":false,"excerpt":"Series:\u00a0Introduction to the MEAN Stack Part 1: Definition of the MEAN stack Part 2:\u00a0Setup of the MEAN stack Part 3:\u00a0Node.js Part 4:\u00a0npm Part 5:\u00a0Connect Part 6:\u00a0Express Part 7:\u00a0MongoDB Part 8:\u00a0Mongoose Part 9:\u00a0REST Part 10:\u00a0Baucis Part 11:\u00a0Bower Part 12:\u00a0AngularJS Part 13:\u00a0Restangular In this article, we will lay out the basics for\u2026","rel":"","context":"In &quot;Tutorials&quot;","block_context":{"text":"Tutorials","link":"https:\/\/www.virtono.com\/community\/category\/tutorial-how-to\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/meanjs-1024x492.png?fit=1024%2C492&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/meanjs-1024x492.png?fit=1024%2C492&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/meanjs-1024x492.png?fit=1024%2C492&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/meanjs-1024x492.png?fit=1024%2C492&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":1114,"url":"https:\/\/www.virtono.com\/community\/tutorial-how-to\/bower\/","url_meta":{"origin":1105,"position":3},"title":"Bower","author":"Shreyash Sharma","date":"October 15, 2017","format":false,"excerpt":"Series:\u00a0Introduction to the MEAN Stack Part 1: Definition of the MEAN stack Part 2:\u00a0Setup of the MEAN stack Part 3:\u00a0Node.js Part 4:\u00a0npm Part 5:\u00a0Connect Part 6:\u00a0Express Part 7:\u00a0MongoDB Part 8:\u00a0Mongoose Part 9:\u00a0REST Part 10:\u00a0Baucis Part 11:\u00a0Bower Part 12:\u00a0AngularJS Part 13:\u00a0Restangular Before we develop a web application with AngularJS, I introduce\u2026","rel":"","context":"In &quot;Knowledgebase&quot;","block_context":{"text":"Knowledgebase","link":"https:\/\/www.virtono.com\/community\/category\/knowledgebase\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/bower-logo.png?fit=1024%2C900&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/bower-logo.png?fit=1024%2C900&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/bower-logo.png?fit=1024%2C900&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/bower-logo.png?fit=1024%2C900&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":1095,"url":"https:\/\/www.virtono.com\/community\/tutorial-how-to\/npm\/","url_meta":{"origin":1105,"position":4},"title":"npm","author":"Daniel Draga","date":"October 10, 2017","format":false,"excerpt":"Series:\u00a0Introduction to the MEAN Stack Part 1: Definition of the MEAN stack Part 2:\u00a0Setup of the MEAN stack Part 3:\u00a0Node.js Part 4:\u00a0npm Part 5:\u00a0Connect Part 6:\u00a0Express Part 7:\u00a0MongoDB Part 8:\u00a0Mongoose Part 9:\u00a0REST Part 10:\u00a0Baucis Part 11:\u00a0Bower Part 12:\u00a0AngularJS Part 13:\u00a0Restangular npm\u00a0\u00a0is a package manager for managing modules.\u00a0That is, it makes\u2026","rel":"","context":"In &quot;Knowledgebase&quot;","block_context":{"text":"Knowledgebase","link":"https:\/\/www.virtono.com\/community\/category\/knowledgebase\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/weekly-header-grace-hopper.png?fit=1200%2C498&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/weekly-header-grace-hopper.png?fit=1200%2C498&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/weekly-header-grace-hopper.png?fit=1200%2C498&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/weekly-header-grace-hopper.png?fit=1200%2C498&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/weekly-header-grace-hopper.png?fit=1200%2C498&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1120,"url":"https:\/\/www.virtono.com\/community\/tutorial-how-to\/restangular\/","url_meta":{"origin":1105,"position":5},"title":"Restangular","author":"Shreyash Sharma","date":"October 16, 2017","format":false,"excerpt":"Series:\u00a0Introduction to the MEAN Stack Part 1: Definition of the MEAN stack Part 2:\u00a0Setup of the MEAN stack Part 3:\u00a0Node.js Part 4:\u00a0npm Part 5:\u00a0Connect Part 6:\u00a0Express Part 7:\u00a0MongoDB Part 8:\u00a0Mongoose Part 9:\u00a0REST Part 10:\u00a0Baucis Part 11:\u00a0Bower Part 12:\u00a0AngularJS Part 13:\u00a0Restangular After the last time we saw AngularJS only superficially, I\u2026","rel":"","context":"In &quot;Knowledgebase&quot;","block_context":{"text":"Knowledgebase","link":"https:\/\/www.virtono.com\/community\/category\/knowledgebase\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/ON31nCTRba5GPcZj4elX_WhatsApp-Image-2016-11-21-at-22.22.07.jpeg?fit=600%2C340&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/ON31nCTRba5GPcZj4elX_WhatsApp-Image-2016-11-21-at-22.22.07.jpeg?fit=600%2C340&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/ON31nCTRba5GPcZj4elX_WhatsApp-Image-2016-11-21-at-22.22.07.jpeg?fit=600%2C340&ssl=1&resize=525%2C300 1.5x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/posts\/1105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/comments?post=1105"}],"version-history":[{"count":2,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/posts\/1105\/revisions"}],"predecessor-version":[{"id":1180,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/posts\/1105\/revisions\/1180"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/media\/1106"}],"wp:attachment":[{"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/media?parent=1105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/categories?post=1105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/tags?post=1105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}