Tutorial 09

Add Delete and Update Contact functionality to the Phone Book app you built in Tutorial 08.


Solution

index.js:

const express = require('express') 
const app = express() 
const cors = require('cors') 
const port = 3000 

const phoneBook = {}

app.use(cors())
app.use(express.json());

// responsible to list contacts or get a specific contact
app.get('/contacts', (req, res) => {
    if (req.query.id) {
        // it means that there's an id as a query string parameter (/contacts?id=5555)
        // i need to create an object and then populate it
        const toReturn = {} // creating an empty object
        toReturn[req.query.id] = phoneBook[req.query.id]
        res.send(toReturn)

    } else {
        res.send(phoneBook) // /contacts
    }
})

// responsible for adding new contacts to the phoneBook
app.post('/contacts', (req, res) => {
    phoneBook[req.body.phone_number] = req.body.name
    res.send(phoneBook)
})

// responsible for updating a contact
app.put('/contacts', (req, res) => {
    phoneBook[req.body.phone_number] = req.body.name
    if (req.body.phoneBook != req.body.old_id) {
        delete phoneBook[req.body.old_id]
    }
    res.send(phoneBook)
})

// responsible for deleting a contact 
app.delete('/contacts', (req, res) => {
    const phoneNumber = req.query.id
    delete phoneBook[phoneNumber]
    res.send(phoneBook)
})

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
})