Я пытаюсь создать динамическую группу в поле select2, пока я извлекаю свои данные из файла JSON. Я использую вложенный цикл, чтобы сначала пройти через состояния, а затем пройти через колледжи в этом состоянии. Метка <optgroup>
должна указывать штат, а <option>
- колледж.
То, что вы видите ниже, это мой текущий код, представляющий то, что я пробовал.
JSON-файл с информацией о базе данных:
var collegeData = [
{
'Ohio':
[
{name: 'Colllege of Wooster', value: 'cow'},
{name: 'Ohio State University', value: 'osu'}
],
'Arizona': [
{name: 'Arizona State University', value: 'asu'}
]
}
];
Select2 с циклами ejs:
<select class="single-select" id="college" name="college">
<option value="default"></option>
<% for(var i = 0; i < college.length; i++) {%>
<optgroup label="<%=college[i] %>">
<% for(var j = 0; j < college[i][j].length; j++) {%>
<option value="<%=college[i][j].value %>">
<%=college[i][j].name %></option>
<%}%>
</optgroup>
<%}%>
</select>
Контроллер:
var mongodb = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/collegeApp';
app.get('/', function(rep, res){
mongodb.connect(url, (error, database) => {
const db = database.db('collegesApp');
if (error) return process.exit(1);
console.log('Connection is linked');
const collection = db.collection('colleges');
collection.find({}).toArray(function(err, results){
if (err) throw err;
res.render('index', { nav, college: results });
});
});
});
Идеальный вывод в HTML:
<select class="single-select" id="college" name="college">
<option value="default"></option>
<optgroup label="Ohio">
<option value="cow"> College of Wooster</option>
<option value="osu"> Ohio State University</option>
</optgroup>
<optgroup label="Arizona">
<option value="asu"> Arizona State University</option>
</optgroup>
</select>
Я получаю ошибку Cannot read 'length' of undefined
, поэтому я знаю, что что-то не так. Я думаю, что это как-то связано с моим синтаксисом, но если у вас есть другие мысли, я был бы рад услышать.
Я также уже ознакомился со статьей W3Schools JSON Arrays, а также со статьей с кодами о массивах JSON. Ни один из них не был настолько конкретным, насколько мне нужно.
Спасибо!