Пока не выходит сделать все в шаблоне, но нашла другой вариант.
Выкладываю рабочее решение
const express = require("express");
const pug = require('pug');
const app = express();
app.set("view engine", "pug");
let jsonData = require('./study.json');
app.get("/", function (request, response) {
var html = '';
for (let i = 0; i < jsonData.length; i++) {
var layout = pug.compileFile('views/' + jsonData[i].type + '.pug');
var html = html + layout(jsonData[i]);
}
response.send(html);
});
app.listen(3000);
Шаблоны остались как были:
include outer.pug
table.inner_table
each val in answ
tr
td
label #[input(type='radio', name=`${id}`, value=`${val.r}`, id=`${id}_${val.r}`)] !{val.lab}
Теперь проблема в том, что когда я увеличиваю количество вопросов до 1000 (примерное реальное количество), время загрузки страницы слишком долгое. Так что буду пытаться все-таки все в шаблоне сделать, может так быстрее будет.
Если что-то получится, выложу сюда.