MEAN, NodeJS, System

Node app Deployment and development process Manager

For development , its better to use nodemon

To install

npm install -g nodemon

To run

nodemon server.js


For Production , For most cases we can use forever

To Install

[sudo] npm install forever -g

To run

forever start app.js

forever start -a server.js

forever stop server.js

forever list

To see continuous Logs in terminal

forever logs server.js -f

AngularJS, ExpressJS, MEAN, MongoDB, NodeJS – Installing in Windows 8.1 (MEAN Stack) is becoming a Popular Modern Framework for MEAN Stack(Mongo , Express , Angular , Node). I have recently tried it out and had real fun with it , such an awesome Boilerplate for MEAN Stack.


Most of the Developers around the world work on MAC/LINUX when they are with MEAN. But I thought why not to write a Full Process for Windows Users . Cool , lets do the whole thing to get running an app in Win8.1.

First , We need to install the Core Node And Mongo.

1.Lets install Node first.Go to Node Download Center and Download Windows Installer (.msi) based on your OS Architecture and just Install with few Clicks.

2.Lets Install MongoDB , to see How to Install Click Here

3.Some of dependencies uses node-gyp with supported Python version 2.7.3.

3.1.Install Python From here



3.2. Install Microsoft Visual Studio C++ 2012/13 for Windows Desktop (Express version works well)

3.3.Install node-gyp

npm install -g node-gyp

4. Install Gulp and Bower

npm install -g gulp

npm install -g bower

5.Install the CLI

npm install -g mean-cli

6.Now create your own app

mean init myApp

cd myApp
npm install

7.To start you application run –


Alternatively, when not using gulp (and for production environments)

node server.js

And browse http://localhost:3000

You can see your Site , All done by the amazing




MongoDB Installation in Windows 8.1

1.Just go to MongoDB Download Center And download like the below picture.


2.Click and Start Installation.

Mongo Install Starts

Mongo Install Starts

3.Do the Complete Installation.

Mongo Complete

Mongo Complete

4.Go to the installed Directory and try to run Mongo Server mongod.exe , You will get exception like below.

Mongo Server mongod.exe

Mongo Server mongod.exe

5.Run the below command in terminal to create those Directories

mkdir c:\data\db
mkdir c:\data\log

6. Now try to run Mongo Server mongod.exe on terminal

C:\Program Files\MongoDB\Server\3.0\bin\mongod.exe

Depending on the security level of your system, Windows may pop up a Security Alert dialog box about blocking “some features” of C:\mongodb\bin\mongod.exe from communicating on networks. All users should select Private Networks, such as my home or work network and click Allow access.


7.Now run Mongo Client mongo.exe on another terminal

C:\Program Files\MongoDB\Server\3.0\bin\mongo.exe

Mongo Server Client

Mongo Server Client

MongoDB successfully installed.

Now lets install MongoDB as a Windows Service.

8. Now run the 3 below commands in Terminal.

echo logpath=c:\data\log\mongod.log> "C:\Program Files\MongoDB\Server\3.0\mongod.cfg"

echo dbpath=c:\data\db>> "C:\Program Files\MongoDB\Server\3.0\mongod.cfg"

sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.0\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB\Server\3.0\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

Your Service is ready now.

To get mongo as CLI , add this to Environment Variable.

Mongo CLI

Mongo CLI

AngularJS, JavaScript, MEAN

AngularJS One Time Binding Concept

Angular 1.3 added a new feature called One Time Binding . This is definitely an awesome enhancement for performance of an angular app.

We know , If a data changes in angular app, The $digest cycle checks for changes through watchers and gets the new value and renders the view. But if the app gets bigger with so many data , so many bindings , the $$watchers count increases with $digest loop size. Though in a large collection only few data got changed but the whole data gets rendered which is not good for performance.

One-time expressions will stop recalculating once they are stable, which happens after the first digest if the expression result is a non-undefined value

The main purpose of one-time binding expression is to provide a way to create a binding that gets deregistered and frees up resources once the binding is stabilized. Reducing the number of expressions being watched makes the digest loop faster and allows more information to be displayed at the same time.

Lets see how we can do this in angular app.

        <h1>Angular OneTimeBinding</h1>
        <br />
            <tr ng-repeat="profile in profiles">
        <br />

        <button ng-click="addProfiles()">addProfiles</button>
        <button ng-click="getWatchers()">getWatchers</button>

            <h3>OneTimeBinding Watchers Count :::  {{totalWatchers}}</h3>


Here I added {{::}} this syntax for One Time Binding.

Lets see our Controller’s code-

app.controller('profileCtrl' , ['$scope' , function($scope){
    console.log('profileCtrl is running...');

    $scope.profiles = [
                    { Id: 1, Name: 'Masoom', Address: 'Dhaka1' },
                    { Id : 2 , Name : 'Talukdar' , Address : 'Dhaka2' },
                    { Id: 3, Name: 'Shahjada', Address: 'Dhaka3' }

    $scope.addProfiles = function () {
        var id = $scope.profiles.length + 1;
        $scope.profiles.push({ Id: id, Name: 'AAAA' + id, Address: 'Dhaka' + id });

    $scope.getWatchers = function () {
        var watchers = ($scope.$$watchers) ? $scope.$$watchers.length : 0;
        var child = $scope.$$childHead;
        while (child) {
            watchers += (child.$$watchers) ? child.$$watchers.length : 0;
            child = child.$$nextSibling;
        $scope.totalWatchers = watchers;


Here If we add a new profile by clicking the addProfile Button , it will add a Row , but the Watcher Count will not increase as its One Time Binding But if we remove the OneTimeBinding Syntax , I will increase the count which hampers the performance.

And, if we do not use One Time Binding in Property Level , but in Collection level like below , then If we click and click addProfile button , it will add new item in the collection inside $scope , but the UI will not render the new Items coz we have used OneTimeBinding in the Collection/List Level.

            <tr ng-repeat="profile in ::profiles">

Hope , It helps you.


ExpressJS, MEAN, NodeJS

Node : Express app with Swig

Today , I will write about a Template Engine for Express App.

And This is Swig – A simple, powerful, and extendable JavaScript Template Engine.

Its Data Binding Syntax is like Angular, And I liked it, its really simple and fun.

This is how we can configure Swig in our Express App-

var cons = require('consolidate');
var app = express();
app.engine('html', cons.swig);
app.set('view engine''html');
app.set('views', __dirname + "/views");
app.get('/'function (req, res) {
    res.render('index', { name: 'Shahjada' });
var server = app.listen(8080, function () {
    var host = server.address().address;
    var port = server.address().port;
    console.log('Example app listening at http://%s:%s', host, port);

And our html is like below as simple –

<h1>Hello {{name}}</h1>

Its easy , right ?



NodeJS : Connect MongoDB and get Data from Collection

In any Web application , its important to connect to Database for data .

In MEAN , as we use MongoDB , so I will write code how a Node app can talk with MongoDB Database.

I have a Database named newDB and I have a collection named myColl in my local MongoDB server.

Like below , we can connect and get data from Mongo Server.

var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/newDB'function(err , db) {
	if(err) {
		throw err;
	db.collection('myColl').findOne({} , function(err , doc){
		if(err) {
			throw err;
	console.dir("Called FindOne");

Hope this Helps.