Estoy tratando de verificar si hay una reserva en un rango de tiempo. No estoy seguro de cómo usar la condición o en mongodb usando mongoose.
Esto es lo que tengo:
const appoinments = await Appointment.find({ seller: seller._id, startTime: { $gt: ISODate(new Date(req.body.startTime).toISOString), $lt: ISODate(new Date(req.body.endTime).toISOString), },// I WANT TO ADD THE OR TO THIS TWO QUERIES endTime: { $gt: ISODate(new Date(req.body.startTime).toISOString), $lt: ISODate(new Date(req.body.endTime).toISOString), }, });Quiero verificar y encontrar cualquier cita que entre en conflicto con la nueva cita que está a punto de agregarse o cualquier cita que finalice durante ese tiempo de la cita.
Así es como se ve mi cita:
const appointmentSchema = new mongoose.Schema({ seller: { type: mongoose.Schema.Types.ObjectId, ref: "Seller", }, startTime: { type: Date, required: true, }, endTime: { type: Date, }, });Simplemente puede usar la función de miembro or() que proporciona mongoose. Funciona igual que el operador $or definido en la documentación de mongoose.
¡Espero que haya ayudado!
const appoinments = await Appointment.find().or([ { startTime: { $gt: ISODate(new Date(req.body.startTime).toISOString), $lt: ISODate(new Date(req.body.endTime).toISOString), } }, { endTime: { $gt: ISODate(new Date(req.body.startTime).toISOString), $lt: ISODate(new Date(req.body.endTime).toISOString), }, } ]);