Я начинающий разработчик, в данный момент делаю тестовые задания, в одном из них требуется следующее (использование MongoDB и Mongoose - обязательно):
На сайте есть два раздела:
Раздел заявок:
- Просмотр заявок в табличном виде
- Создание и редактирование заявки через специальную форму
- Удаление заявки
- В форме заявок по умолчанию доступны несколько полей: название, описание, дата
Раздел настроек:
- Настройка формы заявок
- Добавление, редактирование, удаление полей формы
- Типы полей: текстовое поле, многострочное поле, флажок (checkbox), выпадающий список (select), дата и время
- Полю можно задать имя, описание, элементы списка (для select)
- Поля можно пометить как обязательные к заполнению
- У полей можно задать значение по умолчанию
Насколько я понял задание, то в базе должно быть две таблицы (коллекции) - Заявка и Поле формы. У Заявки должны быть три обязательных поля, а остальные добавляются / удаляются в процессе (в разделе настроек формы). Но я не понимаю, каким образом должна быть устроена модель данных заявки, чтобы динамически менять структуру. Тут ещё проблема в том, если поля формы изменились, то нужно ли оставлять в базе те данные заявки, которые уже были сохранены в полях, которых в данный момент уже нет в базе, либо нет (по-хорошему, конечно, лучше сохранять все данные, но как их потом выводить и связывать с новыми полями, если, например, имена полей совпадают)?
Есть предположение, что можно использовать что-то похожее, но это не точно:
const RequestSchema = new Schema({
Name : {type: String},
Description : {type: String},
Date: {type: Date}
fields : [Schema.Types.Mixed]
}, {strict: false});
Спасибо.