Single Page MEAN Application Setup : 10 Mintues
MongoDB
Express
Angular
NodeJS
Application
Setup
- By Code solution
- Jan 20th, 2021
- 0 comments
- 0
In today's tutorial, we will be looking at the starting setup for a Node.js, AngularJS, MongoDB, and Express application (otherwise known as MEAN).
Application Requirements
- Single Page Application
- Node.js backend with Express and MongoDB
- AngularJS frontend
Application Structure
--app #frontend code
angularjs #angularjs libary
js
controller
about.js
contact.js
home.js
app.js
pages
header.html
home.html
about.html
contact.html
index.html
--node_modules #npm package
package-lock.json
package.json
server.js # backend Code
Creating a directory:
To start with, create an empty directory named MEANJS:
mkdir MEANJS
then move inside the newly created directory:
cd MEANJS
Then Run initialize the package.json by running Command:
npm init
We also need to install Socket.io, which is the main dependency of our project, ExpressJS,Http.
npm install --save express morgan mongoose body-parser method-override multer fs
Creating a server: the code
Create a file named server.js inside your project’s directory. This will hold the actual server
var express = require('express');
var app = express();
var morgan = require('morgan');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var multer = require('multer');
var fs = require("fs");
//allow cross origin requests
app.use(function(req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "POST, PUT, OPTIONS, DELETE, GET");
res.header("Access-Control-Max-Age", "3600");
res.header("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
next();
});
// configuration
app.use(express.static(__dirname + '/app')); // set the static files location /app/img will be /img for users
app.use('/app/uploads',express.static(__dirname + '/app/uploads'));
app.use(morgan('dev'));
app.use(bodyParser.json({limit: '50mb'})); // log every request to the console
app.use(bodyParser.urlencoded({limit: '50mb','extended':'true'})); // parse application/x-www-form-urlencoded // parse application/json
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json
// connect to mongoDB database
mongoose.connect('mongodb://localhost/meanjs');
var Schema = mongoose.Schema;
// user schema
var userSchema = new Schema({
user_name: String,
password: String,
first_name: String,
last_name: String,
user_email:String,
phone: Number,
status: String,
date: { type: Date, default: Date.now }
});
var User = mongoose.model('User', userSchema);
module.exports = User;
// create user
app.post('/api/createUser', function(req, res) {
User.findOne({ 'user_email' : req.body.user_email }, function(err, user) {
// if there are any errors, return the error
if (err){
return res.send(err);
}
// check to see if there already a user with that email
if (user) {
return res.json({"message":"Email already exist"});
} else {
User.create(userobj, function(err, user) {
if (err){
res.send(err);
}
if(user) {
res.json(user);
}
});
}
});
});
// update user
app.put('/api/updateUser', function(req, res) {
User.findByIdAndUpdate(req.body._id, req.body, {new: true}, function(err, user) {
if (err){
res.send(err);
}
res.json(user);
});
});
// delete user
app.delete('/api/removeUser', function(req, res) {
User.remove({
_id : req.body._id
}, function(err, user) {
if (err)
res.send(err);
res.json(user);
});
});
// get users
app.post('/api/getUsers', function(req, res) {
User.find(req.body,function(err, users) {
if (err)
res.send(err)
res.json(users);
});
});
app.listen(process.env.PORT || 9000, function(){console.log("App listening on port 9000");});
Save the above code and run it with the following command.
node server.js
Output :
After creating server-side code then please click this link for to frontend side :
http://codesolution.co.in/detail/post/angularjs-nested-routing--using-ui-routing---10-minutes
Thanks : )
Github Link: https://github.com/Sudarshan101/Meanjs