Skip to content

Latest commit

 

History

History
157 lines (137 loc) · 3.13 KB

notes.md

File metadata and controls

157 lines (137 loc) · 3.13 KB

Node-blog solution

Fork and clone

git clone git@github.com:LambdaSchool/Node-Blog.git

Initialize npm and install dependencies

Run npm init
yarn add * dependencies
yarn add --dev * dev-dependencies
Configure start script

server.js

Import express and start a server using .listen(); Setup third-party middleware

Routes

Create routes directories for users, posts, and tags

usersRoutes.js

Import express
Import db from '../data/helpers/userDb';
Create router object using express.Router()

router.get()

router.get('/', (req, res) => { 
  db.get()
    .then(response => {
      res.json(response);
    })
    .catch(err => {
      res.status(500).json({ error: err });
      console.error(err);
    });
});

router.get('/:id', (req, res) => { 
  db.get(req.params.id)
    .then(users => {
      if (users.length === 0) {
        res.status(404).json({ message: 'user not found' });
      } else {
        res.json(users[0]);
      }
    })
    .catch(err => {
      res.status(500).json({ error: err });
      console.error(err);
    });
});

router.create()

router.post('/', (req, res) => {
  const userInformation = req.body;

  db
    .insert(userInformation)
    .then(response => {
      res.status(201).json(response);
    })
    .catch(err => {
      res.json({ error: err });
      console.log(err);
    });
});

router.put()

router.put('/:id', function(req, res) {
  const { id } = req.params;
  const update = req.body;

  db
    .update(id, update)
    .then(count => {
      if (count > 0) {
        db.get(id).then(users => {
          res.status(200).json(users[0]);
        });
      } else {
        res.status(404).json({ msg: 'user not found' });
      }
    })
    .catch(err => {
      res.status(500).json(err);
      console.error(err);
    });
});

router.delete()

router.delete('/', function(req, res) {
  const { id } = req.query;
  let user;
  db.get(id)
    .then(foundUser => {
      user = { ...foundUser[0] };

      db.remove(id).then(() => {
        res.status(200).json(user);
      });
    })
    .catch(err => {
      res.status(500).json({ error: err });
      console.error(err);
    });
});

Repeat for posts and tags.

Enhance userRoutes.js

Retrieve a list of posts for a user:

router.get('/:id/posts', (req, res) => {
  db.getUserPosts(req.params.id)
    .then(response => {
      res.send(response);
    }).catch(err => {
    res.status(500);
    console.error(err);
  })
});



Enhance postsRoutes.js

Retrieve a list of posts for a user:

router.get('/:id/tags', (req, res) => {
  db.getPostTags(req.params.id)
    .then(response => {
      res.send(response);
    }).catch(err => {
    res.status(500);
    console.error(err);
  })
});



Client application

Use create-react-app to create an application inside the root folder, name it client.

From root run:
npx create-react-app client
cd client
yarn add axios