Skip to content

how to use Mongoose to create Schemas and then interact with our MongoDB database creating amazing recipes

Notifications You must be signed in to change notification settings

Alex-Manye/lab-mongoose-recipes

 
 

Repository files navigation

logo_ironhack_blue 7

Mongoose Recipes

Introduction

thai_style_chicken_noodle_soup_pieces_recipe_web

We learned how to use Mongoose to create Schemas and then interact with our MongoDB database. In the following exercise, we will practice how to implement this by creating awesome recipes.

Requirements

  • Fork this repo
  • Clone this repo

Submission

  • Upon completion, run the following commands:

    git add .
    git commit -m "done"
    git push origin master
    
  • Create Pull Request so your TAs can check up your work.

Instructions

Iteration 1 - Recipe Schema

<<<<<<< HEAD The recipes.js file already connects to the recipesApp database. Now we need to create a Recipe Schema. The schema should have the following fields:

  • title. Type String. It should be required and unique.
  • level. Type String. Only can be one of the following values: Easy Peasy - Amateur Chef - UltraPro Chef (remember the ENUM 😉)
  • ingredients. Type Array.
  • cuisine. Type String. Should be required.
  • dishType. Type String. Possible values: Breakfast - Dish - Snack - Drink - Dessert - Other.
  • image. Type String. Default value: https://images.media-allrecipes.com/images/75131.jpg.
  • duration. Type Number. Min value should be 0.
  • creator. Type String
  • created. Type Date. By default today.

Iteration 2 - Create a recipe

Using the Model.create method, you should pass the info to create a new recipe. After the creation, you can use MongoDB Shell to check everything goes ok. After inserting the recipe, you should console.log the title of the recipe.

To run your code, remember you should use $ node recipes.js.

Iteration 3 - Insert Many recipes

Form the data.js file we are importing an array of recipes. Using the Model.insertMany method, you should add the entire array to the database. After inserting the elements, print on the console the title of each recipe.

Iteration 4 - Update recipe

Now you should have six different recipes in the database, but there was a mistake in one of them. The Rigatoni alla Genovese does not take that long. You should update the duration field and set it to 100. After updating it, print a success message!

Iteration 5 - Remove a recipe

Oh oh! The Carrot Cake is no longer available, so we need to remove it from the database. Using the Model.remove method, remove that recipe from the database and display a success message after doing it!

Iteration 6 - Close the Database

After doing all the task you should close the database. Otherwise, the connection will keep open. Be careful about the asynchrony of all process; you should close it after everything is done! 😉

Happy coding! ❤️

Create a Recipe model inside of the file /models/Recipe.model.js. The schema should have the following fields:

  • title - Type String. It should be required and unique.
  • level - Type String. Can be one of the following values: Easy Peasy - Amateur Chef - UltraPro Chef (remember the enum validator 😉).
  • ingredients - Type Array of Strings (represented as [ String ]).
  • cuisine - Type String. Should be required.
  • dishType - Type String. Possible values: breakfast, main_course, soup, snack, drink, dessert or other.
  • image - Type String. Default value: "https://images.media-allrecipes.com/images/75131.jpg".
  • duration - Type Number. The minimum value should be 0.
  • creator - Type String.
  • created - Type Date. By default, today.

Iteration 2 - Create a recipe

In index.js, after the connection to the database has been established, you should add a new recipe document to the database by calling the Model.create static, passing it the recipe details as an object. After inserting the recipe, you should console.log the title of the recipe.

You can use MongoDB Compass to double check that everything is working as intended.

To run your code, remember you should use:

$ node index.js

Tip: For now, you might want to comment out any unique requirement from the schema

Iteration 3 - Insert multiple recipes

We are importing an array of recipes form the data.json file. Using the Model.insertMany static, you should add the entire array to the database. After inserting the documents, print the title of each recipe to the console.

Iteration 4 - Update recipe

Now you should have six different recipes in the database, but there was a mistake in one of them. The Rigatoni alla Genovese does not take that long. You should update the duration field and set it to 100. You might want to use the Model.findOneAndUpdate static. After updating it, print a success message!

Iteration 5 - Remove a recipe

Oh oh! The Carrot Cake is no longer available, so we need to remove it from the database. Using the Model.deleteOne static, remove that recipe from the database and display a success message after doing it!

Iteration 6 - Close the Database

After completing every task, you need to close the database. Otherwise, the connection will stay open until the node.js process dies. Pay attention to the asynchronicity of the operation. You should only close the connection after everything is done! 😉

Happy coding! 💙

About

how to use Mongoose to create Schemas and then interact with our MongoDB database creating amazing recipes

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%