Skip to content

Latest commit

 

History

History
101 lines (78 loc) · 1.89 KB

lecture01-exercise-solutions.md

File metadata and controls

101 lines (78 loc) · 1.89 KB

Exercise 1

index.js:

const express = require('express');
const bodyParser = require('body-parser');

const mongodb = require('./mongodb.utils');
const Puppy = require('./puppy.model');

const app = express();
app.use(bodyParser.json());

mongodb.createEventListeners();
mongodb.connect();

app.get('/', (req, res) => {
  res.send('Root Endpoint');
});

app.get('/puppies', (req, res) => {
  Puppy.find({}).exec().then((result) => {
    res.send(result);
  });
});

app.post('/puppies', (req, res) => {
  const puppyToInsert = new Puppy({
    name: req.body.name,
    breed: req.body.breed,
    age: req.body.age,
    likes: req.body.likes,
    dislikes: req.body.dislikes
  });

  puppyToInsert.save().then((result) => {
    console.log(result);
    res.send(result);
  }).catch((err) => {
    throw(err);
  });
});

app.listen(3000, () => {
  console.log('Server listening on port 3000');
});
module.exports = app;

puppy.model.js:

const mongoose = require('mongoose');

const puppySchema = mongoose.Schema({
  name: String,
  breed: String,
  age: Number,
  likes: [String],
  dislikes: [String]
});

module.exports = mongoose.model('Puppy', puppySchema);

mongodb.utils.js:

const mongoose = require('mongoose');

mongoose.Promise = global.Promise;

module.exports = {
  createEventListeners: createEventListeners,
  connect: connect,
  disconnect: disconnect
};

function createEventListeners() {
  mongoose.connection.on('connected', () => {
    console.log('Successfully connected to database.');
  });

  mongoose.connection.on('disconnected', () => {
    console.log('Database connection closed.');
  });

  mongoose.connection.on('error', (err) => {
    console.log('There was an issue connecting to the database: ' + err);
  });
}

function connect() {
  mongoose.connect('mongodb://localhost/puppies', { useMongoClient: true });
}

function disconnect() {
  mongoose.disconnect();
}