-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmulheres.js
100 lines (80 loc) · 3.81 KB
/
mulheres.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
90
91
92
93
94
95
96
97
98
99
100
const express = require("express") //iniciandoo express para dar propriedades de servidor para o projeto
const router = express.Router() //configurando a primeira parte da rota
const cors = require("cors") //importando o pacote cors, que permite o consumo dessa API pelo frontend
const conectaBancoDeDados = require('./bancoDeDados') //importando o banco de dados
const Mulher = require('./mulherModel') //importando o modelo de mulher
conectaBancoDeDados() //chamando a função que conecta o banco de dados
const app = express() //iniciando o app
// app recebe a chamada da função express
app.use(express.json()) //os dados que trafegarem pela requisição serão convertidos em json
app.use(cors()) //liberando a api para ser usada pelo frontend
const porta = 3333 //criando a porta
//GET
async function mostraMulheres(request, response){
try {
const mulheresVindasDoBancoDeDados = await Mulher.find() //esperando a conexão acontecer e, quando conseguir, busca todas as mulheres no banco de dados
//find() guarda o resultado na constante e envia esse objto na resposta da requisição
response.json(mulheresVindasDoBancoDeDados)
} catch (erro) {
console.log(erro)
}
}
//POST
async function criaMulher(request, response){
const novaMulher = new Mulher({
nome: request.body.nome,
imagem: request.body.imagem,
citacao: request.body.citacao,
minibio: request.body.minibio
})
try {
const mulherCriada = await novaMulher.save() //espera a conexão acontecer e, quando conseguir, salva a nova mulher no banco de dados
//função save() guarda o resultado na constante e envia esse objto na resposta da requisição
response.status(201).json(mulherCriada) //envio da resposta (retorna a nova mulher criada)
} catch (erro) {
console.log(erro)
}
}
//PATCH
async function corrigeMulher(request, response){
try {
const mulherEncontrada = await Mulher.findById(request.params.id) //espera a conexão acontecer e, quando conseguir, busca a mulher no banco de dados pelo ID
// se os dados forem alterados, substitui os dados antigos pelos novos:
if (request.body.nome){
mulherEncontrada.nome = request.body.nome
}
if (request.body.imagem){
mulherEncontrada.imagem = request.body.imagem
}
if (request.body.citacao){
mulherEncontrada.citacao = request.body.citacao
}
if (request.body.minibio){
mulherEncontrada.minibio = request.body.minibio
}
const mulherAtualizadaNoBancoDeDados = await mulherEncontrada.save() //espera a conexão acontecer e, quando conseguir, salva a mulher atualizada no banco de dados
response.json() //envio da respsta (retorna a lista de mulheres atualizada)
} catch (erro) {
console.log(erro)
}
}
//DELETE
async function deletaMulher(request, response){
try {
await Mulher.findByIdAndDelete(request.params.id) //espera a conexão acontecer e, quando conseguir, busca a mulher no banco de dados pelo ID e deleta
response.json({mensagem: "Mulher deletada com sucesso!"})
} catch (erro) {
console.log(erro)
}
}
//ROTAS
app.use(router.get('/mulheres', mostraMulheres)) //configurei rota GET /mulheres
app.use(router.post('/mulheres', criaMulher)) //configurei rota POST /mulheres
app.use(router.patch('/mulheres/:id', corrigeMulher)) //configurei rota PATCH /mulheres/:id (id da mulher que será alterada)
app.use(router.delete('/mulheres/:id', deletaMulher)) //configurei rota DELETE /mulheres/:id (id da mulher que será deletada)
//PORTA
function mostraPorta(){
console.log("Servidor criado e rodando na porta ", porta)
}
app.listen(porta, mostraPorta) //servidor ouvindo a porta
//após ouvir a porta, chama a função mostraPorta