-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
89 lines (73 loc) · 2.79 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
const express = require("express");
const path = require("path");
const fs = require("fs");
const uuid = require("uuid");
const app = express();
var PORT = process.env.PORT || 3000;
// Middleware
//app.use(express.static(__dirname + '/Develop/public'));
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use(express.static('public'));
// Establish root/home page
app.get("/", function(req, res) {
res.sendFile(path.join(__dirname, "./public/index.html"));
});
// Display the notes page
app.get("/notes", function(req, res) {
res.sendFile(path.join(__dirname, "./public/notes.html"));
});
// Send the JSON data containing the notes to be displayed at route /api/notes
app.get("/api/notes", function(req, res) {
res.sendFile(path.join(__dirname, "./db/db.json"));
});
// Add a note to the db.json file
app.post("/api/notes", function(req, res) {
console.log(req.body)
// Store the body of the request from a frontend in a variable
var newNote = req.body;
// Add a unique id to the object to be able to easily access from the db
newNote.id = uuid.v4();
// Add the new note to the db.json file
fs.readFile("./db/db.json", function(err, data) {
// First have to change the format back into a JS array
var notesArr = JSON.parse(data);
notesArr.push(newNote);
fs.writeFile("./db/db.json", JSON.stringify(notesArr), function(err) {
err
? console.log(err)
: console.log("Note successfully added to file.")
});
});
// Send the newly created note to be displayed on route /api/notes
res.json(newNote);
});
// Delete note from the db.json file & send updated notes to frontend
app.delete("/api/notes/:id", function(req, res) {
// Identify which note is being deleted by accessing the id
var identifier = req.params.id;
// Access the note in the db.json file
fs.readFile("./db/db.json", function(err, data) {
// Change the format back into a JS array
var notesArr = JSON.parse(data);
// Iterate through each note in the array
notesArr.forEach(note => {
// If any of the notes' ids match the id sent from the frontend, delete it
note.id === identifier
? notesArr.splice(notesArr.indexOf(note), 1)
: console.log("Oops, something went wrong when deleting the note.")
});
// Write the updated note array to the JSON file in the correct format
fs.writeFile("./db/db.json", JSON.stringify(notesArr), function(err) {
err
? console.log(err)
: console.log("Note successfully delete from file.")
});
});
// Send the updated JSON data to the frontend so the notes display correctly
res.sendFile(path.join(__dirname, "./db/db.json"));
});
// Server begins listening on PORT
app.listen(PORT, function() {
console.log("App listening on PORT " + PORT);
});