#mongodb #mongoose
Вопрос:
Я пытаюсь запретить пользователю создавать новую вставку, если дата начала нового расписания находится между уже запланированными датами. Например, идентификатор сотрудника 123 уже подал заявление на отпуск с 2021-04-05 по 2021-04-09, я должен запретить пользователю подавать повторное заявление, если дата начала находится в диапазоне от 2021-04-05 до 2021-04-09.
Вот моя модель:
const mongoose = require("mongoose");
const {ObjectID} = mongoose.Schema.Types;
const ScheduleSchema = mongoose.Schema({
startdate: {type: Date},
enddate: {type: Date},
dateadded: {type: Date,default: Date.now},
userid:[{type:ObjectID, ref:"User"}],
},{ timestamps: true });
module.exports = mongoose.model("Schedule", ScheduleSchema)
const Schedule = require('../models/schedules')
И вот мой код, который я застрял здесь, используя findOneAndUpdate, и, конечно, он не сработал:
router.post('/schedule/addschedule/:id',JWTAuthenticatToken, async (req, res) => {
const{startdate,enddate} = req.body
const existingSchedule = await CourseSchedule.findOneAndUpdate({startdate: startdate,enddate:enddate,course:req.params.id},{startdate: startdate,enddate:enddate,course:req.params.id},{ new: true, upsert: true })
return res.json(existingSchedule);
});
Как мне это сделать? Заранее большое спасибо и ценю любую помощь. Спасибо
Ответ №1:
Наконец-то удалось заставить его работать. Вот ответ, и я надеюсь, что он будет полезен здесь.
const existingSchedule = await Schedule.findOne({$and:[{startdate:{$lte:startdate}},{enddate:{$gte:startdate}},{userid:req.params.id}]})