Как мне обновить с помощью мангуста и проверить, существует ли электронная почта

Похоже, я не могу этого понять.

Функция должна проверить, существует ли уже электронное письмо в коллекции. Если электронное письмо существует, значит, человек уже назначил встречу. Если адрес электронной почты существует, необходимо выполнить обновление времени. И если электронной почты не существует, он должен сохранить req.body как новый документ.

      router.put('/appointment', (req, res) => {
    let appointmentData = req.body;
    const email = appointmentData.email;
    const time = appointmentData.time;
    appointmentData.full_date = new Date();
    Appointment.findOne(email).exec((err,booking)=> {
        if(booking){
            Appointment.findOneAndUpdate(email, {time: time},{
                new: true,
                upsert: true
                
            });
            console.log("Item exists");
        }
        else{
            let appointment = new Appointment(appointmentData);
                Tenant.findById({ _id: appointmentData.email /*_id:appointmentData.day*/ }, (err, tanent) => {
                    if (err) {
                        console.error("appointment booking error :", err);
                    } else {
                        if (!tanent) {
                            res.status(400).send('Error Finding tenant');
                        } else {
                            appointment.save((err, appointmentBooked) => {
                                if (err) {
                                    console.log("Error booking in cleaning appointment" + err);
                                } else {
                                    res.status(200).send(appointmentBooked);
                                }
                            })
                        }
                    }
                }); 
        }
    })
});

Несмотря на то, что электронное письмо существует в коллекции, оно продолжает создавать документ, а не обновлять

1 ответ

Измените эту строку кода:

Appointment.findOne(email)

к:

Appointment.findOne({email: email})

Другие вопросы по тегам