[MEAN Stack] First API -- 1. with Node.js, Express and MongoDB

Learn how to import data into your MongoDB and then use Express to serve a simple Node.js API.

Import data into MongoDB:

For exmaple, you have an data.json file and contains some data. 

1. Start Mongod service:

//in the cmd
$ mongod

2. Open a new Tab, import the data:

mongoimport --db simple --collection people --jsonArray data.json

Import data.json file (a json array file), set database as simple, name it as people collection.

Read More: http://docs.mongodb.org/manual/reference/program/mongoimport/

You can play around with those data:

// in cmd

$ mongo

Enter the mongodb cmd-clinet.

Find the data:

db.simple.find();
db.simple.findOne();

Remove data:

db.simple.remove()

Set up Server:

npm install -S express  mongoose cors 

Server.js:

/**
 * Created by Answer1215 on 12/9/2014.
 */
'use strict';

var expres = require('express');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/simple');
var cors = require("cors");

var personSchema = {
    firstName:String,
    lastName:String,
    email:String
};

//create a person model, and rename db as people
var Person = mongoose.model('Person', personSchema, 'people');
var app = expres();
app.use(cors());

app.get('/people', function(request, response){
    Person.find(function(err, data) {
        response.json(200, data);
    })
});

app.listen(3000);

app.js:

/**
 * Created by Answer1215 on 12/9/2014.
 */
'use strict';

function MainCtrl(PeopleService) {
    var vm = this;
    vm.people = [];
    
    vm.getPeople = PeopleService.getPeople().then(function(response) {
        vm.people = response.data;
    });
}

function PeopleService($http) {

    var PeopleService = {};
    PeopleService.getPeople = function() {
         return $http.get('http://localhost:3000/people');
    }

    return PeopleService;
}

angular.module('app',[])
    .controller('MainCtrl', MainCtrl)
    .service('PeopleService', PeopleService);

index.html:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body ng-app="app">

    <div ng-controller="MainCtrl as vm">
        <ul>
            <li ng-repeat="person in vm.people">{{person.firstName}}</li>
        </ul>
    </div>

    <script src="bower_components/angular/angular.min.js"></script>
    <script src="app.js"></script>
</body>
</html>