如果新的计划开始日期在已计划的日期之间,我试图阻止用户创建新的插入。例如,员工id 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);
});
我该怎么做?非常感谢,并感谢任何帮助。谢谢
答案 0 :(得分:0)
终于可以让它工作了。这是答案,我希望它在这里有用。
const existingSchedule = await Schedule.findOne({$and:[{startdate:{$lte:startdate}},{enddate:{$gte:startdate}},{userid:req.params.id}]})