Я пытаюсь выполнить предварительную проверку данных MongoDB, и если они не существуют, вставьте, но почему-то я не могу это выполнить. Когда я делал консольный журнал на экспрессе, он записывал данные, но почему-то не работал. Вот моя модель и остальные API:
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)
API:
const Schedule = require('../models/schedules')
router.post('/schedule/addschedule/:id',JWTAuthenticatToken, async (req, res) => {
const{startdate,enddate} = req.body
//the console log did print out the data
//{
//startdate: '2021-04-05T06:27:40.000Z',
//enddate: '2021-04-08T16:00:00.000Z'
//}
//6055e1ed5eec1e1c10df91d4
console.info(req.body)
console.info(req.params.id)
const existingSchedule = await Schedule.find({startdate: startdate,enddate:enddate,userid:req.params.id})
if (existingSchedule){
return res.json({statusCode: "409", msg:'This schedule already exisits!'});
}else{
const schedule = new Schedule({
startdate: startdate,
enddate:enddate,
userid:existingSchedule.req.params.id})
const scheduleresult = await schedule.save()
return res.json({statusCode: "200"})
}
});
Мне интересно, где я ошибся? Большое спасибо заранее и очень признателен за любую помощь. Еще раз спасибо.





https://mongoosejs.com/docs/tutorials/findoneandupdate.html
Using the upsert option, you can use findOneAndUpdate() as a find-and-upsert operation. An upsert behaves like a normal findOneAndUpdate() if it finds a document that matches the filter. But, if no document matches the filter, MongoDB will insert one by combining filter and update as shown below.
doc = await Schedule.findOneAndUpdate(filter, update, {
new: true, // You should set the new option to true to return the document after update was applied.
upsert: true // Make this update into an upsert
});