Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Arreglos a la llamada a la bd para obtener pregunta #68

Merged
merged 11 commits into from
Mar 8, 2024
9 changes: 9 additions & 0 deletions questionsService/API preguntas.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Cuando se obtiene una pregunta con el getQuestion devuelve un JSON con el siguiente formato.

{
"pregunta": "What is the capital of France?",
"correcta": "Paris",
"respuestasIncorrecta1": "London",
"respuestasIncorrecta2": "Berlin",
"respuestasIncorrecta3": "Madrid"
}
61 changes: 16 additions & 45 deletions questionsService/obtenerPreguntasBaseDatos.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,54 +7,25 @@ const Respuesta = mongoose.model('Respuesta');

class ObtenerPreguntas{

obtenerPregunta(){
console.log("Obteniendo pregunta");
var pregunta;
var respuestaCorrecta;
var respuestaIncorrecta1;
var respuestaIncorrecta2;
var respuestaIncorrecta3;

Pregunta.aggregate([
{ $sample: { size: 1 } }
]).then(pregunta => {
var pregunta_id = pregunta._id;
pregunta = pregunta.textoPregunta;
Tipos.findOne({ _id: { $in: pregunta.pregunta_id } }).then(tipo => {
console.log(tipo_id);
respuestaCorrecta = pregunta.respuestaCorrecta;
console.log(respuestaCorrecta);
Respuesta.aggregate([
{ $match: { nombreTipo: tipo._id, texto: { $ne: [respuestaCorrecta, "Ninguna de las anteriores" ]} } },
{ $sample: { size: 3 } }

]).then(respuestas => {
console.log(respuestas);
respuestaIncorrecta1 = respuestas[0].textoRespuesta;
respuestaIncorrecta2 = respuestas[1].textoRespuesta;
respuestaIncorrecta3 = respuestas[2].textoRespuesta;
}).catch(err => {
console.error(err);
});
})
console.log(pregunta_id);

}).catch(err => {
console.error(err);
});

console.log(pregunta);
console.log(respuestaCorrecta);
console.log(respuestaIncorrecta1);
console.log(respuestaIncorrecta2);
console.log(respuestaIncorrecta3);
async obtenerPregunta(){
var resultado = {};

var pregunta = await Pregunta.aggregate([{ $sample: { size: 1 } }]);

//por ejemplo capital
var tipo = await Tipos.findOne({ idPreguntas: { $in: pregunta[0]._id } });

var respuestas = await Respuesta.aggregate([
{ $match: { tipos: {$in : [tipo._id]}, textoRespuesta: { $ne: [pregunta[0].respuestaCorrecta, "Ninguna de las anteriores" ]} } },
{ $sample: { size: 3 } }
]);

return resultado = {
pregunta: pregunta.textoPregunta,
correcta: respuestaCorrecta,
respuestasIncorrecta1: respuestaIncorrecta1,
respuestasIncorrecta2: respuestaIncorrecta2,
respuestasIncorrecta3: respuestaIncorrecta3
correcta: pregunta.respuestaCorrecta,
respuestasIncorrecta1: respuestas[0].textoRespuesta,
respuestasIncorrecta2: respuestas[1].textoRespuesta,
respuestasIncorrecta3: respuestas[2].textoRespuesta
};
}
}
Expand Down
3 changes: 2 additions & 1 deletion questionsService/question-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ app.get('/getQuestion', async(req,res)=> {
try{
//coger pregunta bd
console.log("LLegamos al question service")
const questions = await question.obtenerPregunta();
const questions = question.obtenerPregunta();

//para devolver la pregunta
res.json(questions);

Expand Down