Как вывести ответы на вопросы из массивов?

364
16 января 2018, 14:44

Как реализовать тесты я не разу не делал, попробовал сделать это впервый раз. Я реализовал примерно вывод из mysql массивы вопросов, ответов и правильных ответов, но у меня проблема в том что вывести не получается. Шаблонизатор использую pug. У меня такая архитектура в бд. Тема, вопросы, ответы(и там же хранятся правильные ответы). ТО есть справа налево такая связь имеет Тема->Вопросы->Ответы Только то что я получил массив ответов я не могу их вывести на экран нормально Моя реализация

const Router = require('koa-router'), 
    User = require('./model/user'), //Хранятся запросы в таблицу User 
    Test = require('./model/test'), //Хранятся запросы в таблицу Test 
    router = new Router(); 
 
router.get('/testing/:id', async ctx => { 
/** Создаю пустые массивы для ответов и правильных ответов*/ 
        let answearArr = []; 
        let answerCorrectArr = []; 
        let theme = await Test.theme(ctx.params.id); // Получаю название темы по id страницы 
        let test = await Test.test(ctx.params.id); // Получаю все вопросы, где тема = id 
        for(i=0; i < test.length; i++){ 
            let answear = test[i].id; 
            answearArr.push(await Test.answear(answear)); // Делаю выборку и помещаю каждый ответ в массив ответов 
        } 
        for(i=0; i < answearArr.length; i++){ 
            let arr = answearArr[i]; // делаю выборку ответов на вопросы в массиве 
            for(n=0; n < arr.length; n++){ 
                let arr1 = arr[n]; // Выбираю каждый ответ отдельный 
                if(arr1.answer === 1){ 
                    answerCorrectArr.push(arr1.id); //помещаю в массив правильных ответов id данного ответа 
                } 
            } 
        } 
        await ctx.render('test', { 
            title: 'Тест', 
            path: 'test', 
            thema: theme[0], 
            test: test, 
            answear: answearArr, 
        }) 
    })

В pug файле test

include layout
    .container
        h1=thema.name
        for question in test
            p=question.name
            for answearTest in answear
                ul
                    li
                        input(type='radio' name=answearTest)
                        | #{answearTest[0].text} // Вот тут/Когда мне нужно выбрать ответы на 1 вопрос

В массивах хранятся следующие данные В переменной test

[ RowDataPacket {
    id: 1,
    name: 'Первый вопрос',
    id_theme: 1 },
  RowDataPacket {
    id: 2,
    name: 'Второй вопрос',
    id_theme: 1 },
  RowDataPacket {
    id: 4,
    name: 'Третий вопрос',
    id_theme: 1 } ]

answearArr

[ [ RowDataPacket { id: 1, text: 'один-два дня', id_question: 1, answer: 1 },
    RowDataPacket { id: 2, text: 'более 5 дней', id_question: 1, answer: 0 },
    RowDataPacket { id: 3, text: '3-5 дней', id_question: 1, answer: 0 } ],
  [ RowDataPacket { id: 4, text: 'да', id_question: 2, answer: 1 },
    RowDataPacket { id: 5, text: 'нет', id_question: 2, answer: 0 },
    RowDataPacket {
      id: 6,
      text: 'не постоянно, Меняется постоянно',
      id_question: 2,
      answer: 0 } ],
  [ RowDataPacket { id: 7, text: 'да', id_question: 4, answer: 0 },
    RowDataPacket { id: 8, text: 'нет', id_question: 4, answer: 0 },
    RowDataPacket { id: 9, text: 'не помню', id_question: 4, answer: 1 } ] ]

answerCorrectArr

[ 1, 4, 9 ]
READ ALSO
Как изменить формат даты в google chart?

Как изменить формат даты в google chart?

Использую в работе google chart, а именно Dual-Y Charts и вот столкнулся с вопросом, необходимо по оси X отобразить даты формата 09/10/2017, но ничего не выходит,...

382
Как написать код акции с изменением переменной каждые 4 дня?

Как написать код акции с изменением переменной каждые 4 дня?

Помогите написать код акции Есть день например сегодня 15, акция до 19 числа, 16 числа тоже 19, но когда наступает 19 число, то акция меняется до 23, то есть...

379
Mojolicious и reCAPTCHAv2 в popup

Mojolicious и reCAPTCHAv2 в popup

Здравствуйте! Имеется такая ситуация: по нажатию кнопки "отправить" срабатывает обработчик чекера-форм, если всё верно -- вызывается всплывающее...

381
Удаление повторного div&#39;а по имени класса

Удаление повторного div'а по имени класса

Есть два <div> одинакового классаНа странице один выше другого

278