Я пытаюсь создать приложение-викторину с node.js в качестве внутреннего языка. Я пытаюсь получить все вопросы и для каждого вопроса в массиве другой массив «ответов» с каждым ответом на этот вопрос. Я хочу получить эту информацию в виде запроса на получение.
pi c таблиц моей базы данных
формат вывода, который я хочу, будет выглядеть следующим образом:
[
{
"questionText": "Question1How much do you like Python?",
"answers": [
{
"answerText": "Q1RESPONSE OPTION 1",
"isCorrect": false,
"score": 0
},
{
"answerText": "Q1RESPONSE OPTION 2",
"isCorrect": true,
"score": 10
}
]
},
{
"questionText": "Question2How much do you like Python?",
"answers": [
{
"answerText": "Q2RESPONSE OPTION 1",
"isCorrect": false,
"score": 0
},
{
"answerText": "Q2RESPONSE OPTION 2",
"isCorrect": true,
"score": 10
}
]
}
]
До сих пор я делал эту функцию контроллера для запроса на получение
const getAllAnswersForQuestion = async (req, res) => {
try {
let question_id = req.params.question_id;
const question = await Question.findOne({ where: { id: question_id } });
const answers = await Answer.findAll({
where: {
questionId: question_id
}
})
if (answers.length > 0) {
res.status(200).send({ question, answers });
} else
res.status(404).json({ message: "question has 0 answers" });
} catch (e) {
console.error(e);
res.status(500).send({ message: "server error" });
}
};
Но получаемый мной результат выглядит так:
{
"question": {
"id": 1,
"questionText": "Q1How much do you like Python?",
"testId": 1
},
"answers": [
{
"id": 1,
"answerText": "Q1RESPONSE OPTION 1",
"isCorrect": false,
"score": 0,
"questionId": 1
},
{
"id": 2,
"answerText": "Q1RESPONSE OPTION 2",
"isCorrect": true,
"score": 10,
"questionId": 1
}
]
}
У вас есть любая идея о том, как я могу создать функцию для добавления к выходному объекту массива подкомпонентов, например, для каждого вопроса, чтобы вернуть ответы внутри своего объекта, а затем вернуть все вопросы, как указано выше?
Спасибо заранее!