Я создаю приложение Schedule Manager с использованием node.JS + Express + Mongoose и пытаюсь найти встречи в определенный день и место. Если встречи не были найдены, я хочу создать пустые встречи между начальной и конечной датами, чтобы они были готовы, когда мне это нужно.
Вопрос:
Могу ли я как-то вернуть только что созданные объекты встречи вместо повторного вызова Appointments.find
? Если это возможно, каков наилучший способ сделать это?
Пример: я представляю что-то вроде создания нового массива и добавления каждого объекта через итерацию.
Вот код для моей модели:
Appointment.find(query)
.exec()
.then((appointments) => {
if (appointments.length == 0) {
Location.findById(locationId)
.exec()
.then((location) => {
for (let j = location.available_time_start; j <= location.available_time_end; j += location.appointment_duration) {
var newAppointment = new Appointment();
newAppointment.start_date = new Date(day.getFullYear(), day.getMonth(), day.getDate(), j);
newAppointment.appointment_duration = location.appointment_duration;
newAppointment.location = location.id;
newAppointment.booked = false;
newAppointment.locked = false;
Appointment.createAppointment(newAppointment, function (err, appointment) {
if (err) throw err;
console.log(appointment.location + ' - ' + appointment.start_date);
});
}
// I WANT TO RETURN THE APPOINTMENTS HERE!
})
.catch((err) => {
console.log("Error while creating appointments: " + err);
});
} else {
// IT RETURNS AS EXPECTED WHEN PREVIOUSLY INCLUDED!
callback(null, appointments);
}
})
.catch((err) => {
console.log("Error while searching for appointments: " + err);
});