[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>