猫鼬 findOneAndUpdate 过滤

时间:2021-03-30 09:23:05

标签: mongodb mongoose

如果新的计划开始日期在已计划的日期之间,我试图阻止用户创建新的插入。例如,员工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);       
});

我该怎么做?非常感谢,并感谢任何帮助。谢谢

1 个答案:

答案 0 :(得分:0)

终于可以让它工作了。这是答案,我希望它在这里有用。

  const existingSchedule = await Schedule.findOne({$and:[{startdate:{$lte:startdate}},{enddate:{$gte:startdate}},{userid:req.params.id}]})