Book Image

MEAN Blueprints

By : Robert Onodi
Book Image

MEAN Blueprints

By: Robert Onodi

Overview of this book

The MEAN stack is a combination of the most popular web development frameworks available—MongoDB, Angular, Express, and Node.js used together to offer a powerful and comprehensive full stack web development solution. It is the modern day web dev alternative to the old LAMP stack. It works by allowing AngularJS to handle the front end, and selecting Mongo, Express, and Node to handle the back-end development, which makes increasing sense to forward-thinking web developers. The MEAN stack is great if you want to prototype complex web applications. This book will enable you to build a better foundation for your AngularJS apps. Each chapter covers a complete, single, advanced end-to-end project. You’ll learn how to build complex real-life applications with the MEAN stack and few more advanced projects. You will become familiar with WebSockets and build real-time web applications, as well as create auto-destructing entities. Later, we will combine server-side rendering techniques with a single page application approach. You’ll build a fun project and see how to work with monetary data in Mongo. You will also find out how to a build real-time e-commerce application. By the end of this book, you will be a lot more confident in developing real-time, complex web applications using the MEAN stack.
Table of Contents (13 chapters)
MEAN Blueprints
About the Author
About the Reviewer

Modifying the user backend

The user backend logic needs to change a little to fit our needs. For example, we need roles for our users. We will detail this when we talk about the user model. We must add authorization policies. We also need a profile for our users.

Modifying the user model

We need to make a few changes to the user model in order to support multiple account types and eventually assign roles to users. This will tell us whether the user is registered for a simple account, where they can define a profile with work experience, or to create a company that wants to post job opportunities.

The roles are going to define what actions the user can perform. For example, for a company we can have a company owner that has full control over the account, or we can have a user that is a member of that company and posts available job openings.

Let's modify the user schema from jobboard/app/models/user.js with the following:

var UserSchema = new Schema({
  email:  {
    type: String,