Building a Basic Todo List REST API in Node.js with Express

ACT
3,019 views

Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content

Persistence

Here is an example of using a database. To do so, the todo model has been extracted from app.js and added as a module in the models folder:

 /
  |
  | - app.js
  | - models/todo.js

Within the todo.js module, a require has been done to the sqlite3 module that enable the use of an in-memory database.

Example of use of persistence
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
const express = require('express');
const port = 9000;
const app = express();
const postparser = require('./middleware/postparser');
const Todo = require('./models/todo');
app.use(postparser);
app.get('/', function(request, response){
Todo.all((err, todos) => response.status(200).json(todos));
});
app.post('/', (request, response) => {
console.log(request.body);
var newTodo = JSON.parse(request.body);
Todo.add(newTodo);
response.status(201).json();
});
app.put('/:id', (request, response) => {
var id = request.params.id;
var updatedTodo = JSON.parse(request.body);
updatedTodo.id = parseInt(id);
Todo.update(updatedTodo, (err, data) => {
if(err)
{
response.status(404, 'The task is not found').send();
} else {
response.status(204).send(data);
}
});
});
app.delete('/:id', (request, response) => {
var id = parseInt(request.params.id);
Todo.delete(id, (err) => {
if(err){
response.status(404).send();
}else{
response.status(200).send();
}
});
});
app.listen(port);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Now we have to work on the presentation layer.

Open Source Your Knowledge: become a Contributor and help others learn. Create New Content