Как вы заметили, тип поля, которое вы определили, не соответствует данным, которые вы хотите сохранить в нем. Если вы определите его как тип: Дата, он будет принимать только действительные даты, а "18:00:00" - нет.
Из того, что я понимаю, вы хотите сделать, я думаю, что лучшим вариантом может быть сохранение действительного объекта даты, даже если вы только собираетесь показывать или редактировать в своем коде время на стороне клиента.
Другой возможностью может быть объявление трех числовых полей в вашей модели: часы, минуты и секунды.
EDIT:
Чтобы сохранить только то время, которое вы запрашиваете, модель может выглядеть следующим образом:
schedule: [{
hours: {
type: Number, required: true, min: 0, max: 23
},
minutes: {
type: Number, required: true, min: 0, max: 59
},
seconds: {
type: Number, required: true, min: 0, max: 59
}
}]
Я не знаю, как вы собираетесь обрабатывать эти данные, но вы можете получить строку, подобную той, которую вы пытались сохранить, с помощью функции, подобной этой:
function timeToString(h, m, s) {
if (h < 10) h = '0' + h;
if (m < 10) h = '0' + h;
if (s < 10) h = '0' + h;
return h + ':' + m + ':' + s;
}