Models - NodeJS e Express (parte 4)

Posted by uselessdev on 04/02/2017

Índice

E ai galera, tudo de boa?

Models

No último artigo retornamos nosso objeto através do nosso controller, O problema é que controllers não devem ser responsáveis por dados, então para corrigir isso, vamos passar nossos dados para um Model.

Vamos criar nosso model:

1
$ mkdir models; touch models/task.js

Uma vez criado nosso model, precisaremos de um método que retorne todos os nossos registros então, vamos adicionar o seguinte:

1
2
3
4
5
6
7
8
9
10
11
12
13
// ./models/task.js
var tasks = {
data: [
{_id: 1, title: 'Tarefa', status: 0, created_at: new Date()},
{_id: 1, title: 'Tarefa', status: 0, created_at: new Date()}
]
}
function all () {
return tasks
}
module.exports = {all}

Agora precisamos mudar nosso controller pra que ele pegue os dados do model agora:

1
2
3
4
5
6
7
8
9
10
11
// ./controllers/tasks.js
module.exports = function (app) {
var Task = app.models.task
return {
index: function (request, response) {
response.json(Task.all())
}
}
}

Agora que temos nosso model nosso responsável por nossos dados, vamos continuar.

Adicionando tarefas.

Nós já listamos nossas tarefas, então agora queremos poder adicionar nossas tarefas, pra isso precisamos adicionar uma rota que vai lidar com nosso POST:

1
2
3
4
// ./routes/
//...
app.post('/', app.controllers.tasks.store)
// ...

Agora no nosso controller precisamos criar nosso método store:

1
2
3
4
5
6
// ./controllers/tasks.js
// ...
store: function (request, response) {
console.log(request.body)
}
// ...

Se fizermos o post agora (você pode usar o postman) no nosso console não vai aparecer nada, isso porque o Express não está fazendo o parse, e pra isso vamos precisar de um outro módulo: Body Parser depois de instalado, vamos configurar ele no bootstrap/app.js, adicione o seguinte:

1
2
3
4
5
var bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({
extended: true
}))

Agora se fizermos o post de novo no nosso terminal, podemos ver:

1
{ title: 'valor' }

Então agora que configuramos nossa aplicação pra trabalhar com as requisições POSTS, vamos de fato adicionar nossa nova tarefa, ainda no nosso controller ./controllers/tasks.js mude o método store:

1
2
3
4
5
6
7
8
9
store: function (request, response) {
Task.save({
title: request.body.title,
status: 0,
created_at: new Date()
})
response.redirect('/')
}

Aqui nós chamamos o método save do nosso model Task, logo depois fazemos o redirect assim, quando a gente salvar nosso model nossa aplicação vai nos mandar de volta pra página inicial. Agora precisamos adicionar o método save no nosso model:

1
2
3
4
function save (object) {
object._id = tasks.data[tasks.data.length - 1]._id + 1
tasks.data.push(object)
}

Na primeira linha nós definimos o indice _id da nossa aplicação, que nada mais é que o valor do _id do ultimo indice somado mais 1.

E é isso, assim nós adicionamos nosso registro, no próximo artigo nós veremos como editar e remover nossos registros.

Qualquer dúvida só comentar logo abaixo ou na página no Facebook.

Até a próxima.

Próximo: Editando e Excluindo - NodeJS e Express - Criando uma aplicação simples (parte 4)


Comentários: