Skip to content

Latest commit

 

History

History
151 lines (116 loc) · 2.71 KB

phase2.md

File metadata and controls

151 lines (116 loc) · 2.71 KB

Phase 2

Working with MongoDB and Mongoose.

MongoDB Connection String: mongodb://107.170.4.85/firstname-lastname

Add Mongoose Dependency

http://mongoosejs.com
https://npmjs.org/package/mongoose

In package.json

"dependencies": {
  "express" : "3.4.x",
  "mongoose" : "3.8.x"
}
$ npm install

Create Beer controller (beer.js).

Create a new file called beer.js. Create and export a contoller.

var Beer = function(mongoose) {};

module.exports = Beer;

Create Mongo Schema and Model

var Beer = function(mongoose) {
  this.BeerSchema = new mongoose.Schema({
    name: { type: String, required: true },
    type: { type: String },
    domestic: { type: Boolean },
    rating: { type: Number }
  });

  this.Beer = mongoose.model('Beer', this.BeerSchema);
};

Add function to get all beers

Beer.prototype.get = function(callback) {
  this.Beer.find(callback);
};

Add function to create new beer

Beer.prototype.create = function(postData, callback) {
  var beer = new this.Beer(postData);
  beer.save(callback);
};

Add function to remove beer

Beer.prototype.remove = function(beerName, callback) {
  this.Beer.remove({ name: beerName }, callback);
};

Add routes to Express app

app.use(express.json());
app.post('/beer', function(req, res) {

  beer.create(req.body, function(err, result) {
    if(err) {
      res.send(500, err.toString());
    }
    else {
      res.send(result);
    }
  });
});

app.get('/beer', function(req, res) {
  
  beer.get(function(err, result) {
    if(err) {
      res.send(500, err.toString());
    }
    else {
      res.send(result);
    }
  });
});

app.delete('/beer/:name', function(req, res) {

  beer.remove(req.params.name, function(err) {
    if(err) {
      res.send(500, err.toString());
    }
    else {
      res.send(200);
    }
  });
});

Connect to Mongo

In phase1.js:

var express = require('express'),
    app = express(),
    mongoose = require('mongoose');

mongoose.connect('mongodb://107.170.4.85/brandon-cannaday');

Create Beer Controller

In phase1.js:

var express = require('express'),
    app = express(),
    mongoose = require('mongoose'),
    Beer = require('./beer'),
    beer = new Beer(mongoose);

// Connect to MongoDB.
mongoose.connect('mongodb://107.170.4.85/brandon-cannaday');

Testing

Postman Plugin for Chrome
https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm?hl=en

app/phase2/postman.json is a collection of Postman requests that can be imported into your collection.

curl:

curl -X POST -H "Content-Type: application/json" -d '{ "name" : "Miller" }' -i http://localhost:8080/beer