In this tutorial, I will show you how to build a full-stack (Angular 8 + Node.js + Express + MySQL) example with a CRUD Application. The back-end server uses Node.js + Express for REST APIs, front-end side is an Angular App with HTTPClient.
Angular + Node.js + Express + MySQL example
We will build a full-stack Tutorial Application in that:
- Tutorial has id, title, description, published status.
- User can create, retrieve, update, delete Tutorials.
- There is a search box for finding Tutorials by title.
Here are screenshots of the example.
– Add an object:
– Retrieve all Tutorials:
– Click on Edit button to update a Tutorial:
On this Page, you can:
- change status to Published using Publish button
- delete the Tutorial using Delete button
- update the Tutorial details with Update button
– Search Tutorials by title:
Full-stack CRUD App Architecture
We’re gonna build the application with following architecture:
– Node.js Express exports REST APIs & interacts with MySQL Database using Sequelize ORM.
– Angular Client sends HTTP Requests and retrieves HTTP Responses using HTTPClient, consume data on the components. Angular Router is used for navigating to pages.
Node.js Express Back-end
These are APIs that Node.js Express App will export:
|GET||api/tutorials||get all Tutorials|
|GET||api/tutorials/:id||get Tutorial by |
|POST||api/tutorials||add new Tutorial|
|PUT||api/tutorials/:id||update Tutorial by |
|DELETE||api/tutorials/:id||remove Tutorial by |
|DELETE||api/tutorials||remove all Tutorials|
|GET||api/tutorials?title=[kw]||find all Tutorials which title contains |
– db.config.js exports configuring parameters for MySQL connection & Sequelize.
– Express web server in server.js where we configure CORS, initialize & run Express REST APIs.
– Next, we add configuration for MySQL database in models/index.js, create Sequelize data model in models/tutorial.model.js.
– Tutorial controller in controllers.
– Routes for handling all CRUD operations (including custom finder) in tutorial.routes.js.
You can find step by step to implement this Node.js Express App in the post:
Node.js Rest APIs example with Express, Sequelize & MySQL
Angular 8 Front-end
App component is a container with
router-outlet. It has navbar that links to routes paths via
TutorialsList component gets and displays Tutorials.
Tutorial component has form for editing Tutorial’s details based on
AddTutorial component has form for submission new Tutorial.
– These Components call
TutorialService methods which use Angular
HTTPClient to make HTTP requests and receive responses.
– There are 3 components:
tutorial.service has methods for sending HTTP requests to the Apis.
– app-routing.module.ts defines routes for each component.
app component contains router view and navigation bar.
app.module.ts declares Angular components and import necessary modules.
You can find step by step to implement this Angular App in the post:
Angular 8 CRUD Application example with Web API
Now we have an overview of Angular 8 + Node.js Express + MySQL example when building a full-stack CRUD App.
We also take a look at client-server architecture for REST API using Express & Sequelize ORM, as well as Angular 8 project structure for building a front-end app to make HTTP requests and consume responses.
Next tutorials show you more details about how to implement the system:
- Back-end: Node.js Rest APIs example with Express, Sequelize & MySQL
- Front-end: Angular 8 CRUD Application example with Web API
Happy learning, see you again!