Nodejs 101 CRUD basic sample using express
pre request
npm install express
npm install joi
// this is a basic demo for http CRUD using express
// including joi validation
const express = require("express");
const Joi = require("joi");
const app = express();
app.use(express.json());
const courses = [
{ id: 1, name: "course 1" },
{ id: 2, name: "course 2" },
{ id: 3, name: "course 3" },
];
app.get("/", (req, res) => {
res.send("Hi There, welcome .Home Page");
});
app.get("/api/courses", (req, res) => {
res.send(courses);
});
app.get("/api/courses/:id", (req, res) => {
const course = courses.find((c) => c.id === parseInt(req.params.id));
if (!course) return res.status(404).send("Not found!");
res.send(course);
// res.send(req.params.id);
});
app.post("/api/courses", async (req, res) => {
const schema = Joi.object({
name: Joi.string().min(3).required(),
});
const result = schema.validate(req.body);
if (result.error) {
res.status(400).send(result.error.details[0].message);
return;
}
console.log(result);
const course = {
id: courses.length + 1,
...result.value,
};
courses.push(course);
res.send(course);
// try {
// const result = await schema.validateAsync(req.body);
// console.log(result);
// const course = {
// id: courses.length + 1,
// ...result,
// };
// courses.push(course);
// res.send(course);
// } catch (err) {
// res.status(400).send(err.details[0].message);
// return;
// }
// console.log("test");
// if (!req.body.name || req.body.name.length < 3) {
// res.status(400).send("Name is required and shoudl be minimum 3 characters");
// return;
// }
});
app.get("/api/courses/:year/:month", (req, res) => {
// res.send(req.params);
res.send(req.query);
});
app.put("/api/courses/:id", (req, res) => {
// find
const course = courses.find((c) => c.id === parseInt(req.params.id));
if (!course) return res.status(404).send("Not found!");
// validate
const schema = Joi.object({
name: Joi.string().min(3).required(),
});
const result = schema.validate(req.body);
// console.log(result);
if (result.error) {
res.status(400).send(result.error.details[0].message);
return;
}
//update the course
course.name = req.body.name;
//return
res.send(course.name);
});
// function courseValidate(body) {
// }
app.delete("/api/courses/:id", (req, res) => {
// find
const course = courses.find((c) => c.id === parseInt(req.params.id));
if (!course) return res.status(404).send("Not found!");
// Delete
const index = courses.indexOf(course);
courses.splice(index, 1);
res.send(course);
});
//PORT
const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`Listening on port ${port}...`));
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114