-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
172 lines (138 loc) · 4.53 KB
/
index.js
File metadata and controls
172 lines (138 loc) · 4.53 KB
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
import express, { response } from 'express';
import mongoose from 'mongoose';
import { password } from './password.js';
import path from 'path'
import {dirname} from 'path'
import { fileURLToPath } from 'url';
const app = express();
const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)
// Definir el esquema para la colección de inscripciones
const InscripcionSchema = new mongoose.Schema({
name: { type: String, required: true },
email: { type: String, required: true },
message: { type: String, required: true },
});
InscripcionSchema.set('toJSON',{
transform:(document, returnedObject)=>{
returnedObject.id=returnedObject._id.toString(),
delete returnedObject.__v,
delete returnedObject['_id']
}
})
// Aplicar el middleware para analizar los cuerpos de las solicitudes
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// Conectar a la base de datos de MongoDB
const uri = `mongodb+srv://darcardebasp:${password}@cluster0.mt5qgwf.mongodb.net/test?retryWrites=true&w=majority`;
mongoose.connect(uri, {
useUnifiedTopology: true
})
.then(() => console.log('Conexión a MongoDB exitosa'))
.catch((err) => {
console.error('Error al conectar a MongoDB:', err);
process.exit(1); // Salir del proceso si hay un error de conexión
});
// Definir el modelo para la colección de inscripciones
const Inscripcion = mongoose.model('Inscripcion', InscripcionSchema);
app.set('view engine', 'ejs');
// Ruta para manejar el registro de inscripciones
app.post("/register", (req, res) => {
const { name, email, message } = req.body;
// Crear una nueva instancia del modelo Inscripcion
const nuevaInscripcion = new Inscripcion({ name, email, message });
// Guardar la inscripción en la base de datos
nuevaInscripcion.save()
.then((datos) => {
// Crear una nueva respuesta solo con los campos necesarios
const inscripcionRegistrada = {
name: datos.name,
email: datos.email,
message: datos.message,
id: datos._id
};
const htmlResponse = `
<!DOCTYPE html>
<html>
<head>
<title>Registro Exitoso</title>
</head>
<body>
<h1>¡Registro exitoso!!!!!!!!!</h1>
<p>Nombre: ${inscripcionRegistrada.name}</p>
<p>Email: ${inscripcionRegistrada.email}</p>
<p>Mensaje: ${inscripcionRegistrada.message}</p>
<p>ID de inscripción: ${inscripcionRegistrada.id}</p>
<p>volver al formulario</p>
<!-- Botón que permite volver al formulario -->
<a href="/">Volver al Formulario</a><br/>
</body>
</html>
`;
res.send(htmlResponse);
})
.catch((err) => {
console.log('ERROR')
console.error(err);
res.status(500).send({ message: `Error al guardar la inscripción en la base de datos: ${err.message}` });
});
});
app.put('/todos/:id', (request, response) => {
const { id } = request.params
const note = request.body
const newNoteInfo = {
email: note.email,
message: note.message
}
Inscripcion.findByIdAndUpdate(id, newNoteInfo, { new: true })
.then(result => {
response.json(result)
})
})
app.delete('/todos/:id', (request, response) => {
const { id } = request.params;
Inscripcion.findByIdAndDelete(id)
.then(result => {
if (result === null) {
return response.status(404).json({ message: 'No se encontró la inscripción.' });
}
response.status(200).json({ message: 'Inscripción eliminada correctamente.' });
})
.catch(error => {
console.error(error);
response.status(500).end();
});
});
// app.get('/', (req, res) =>{
// return res.send('<h1>BIenvenidos a mi servidor con Node.js</h1>').end()
// })
app.get('/todos', (req, res) => {
Inscripcion.find({}).then(
data =>{
res.json(data)
}
)
});
app.get('/todos/:id', (req, res) => {
const { id } = req.params;
// Supongamos que 'Inscripcion' es el modelo que representa los datos de la inscripción en la base de datos
Inscripcion.findById(id)
.then(data => {
if (data) {
res.json(data);
} else {
res.status(404).json({ error: 'ID no encontrado' });
}
})
.catch(() => {
res.status(500).json({ error: 'Error en el servidor' });
});
});
app.use(express.static(path.join(__dirname, 'src')));
app.use((req, res) =>{
return res.status(404).end()
})
const port = process.env.PORT || 3001;
app.listen(port, () => {
console.log(`Servidor iniciado en http://localhost:${port}`);
});