Как удалить все документы из MongoDB с помощью функции deleteMany()?

#reactjs #mongodb #http #axios #http-delete

Вопрос:

Я пытаюсь использовать приложение Express MongoDB для создания реакции.

Мне удалось успешно опубликовать некоторые документы в MongoDB с помощью метода POST, но я не могу понять, как удалить все документы с помощью УДАЛЕНИЯ (я пытаюсь иметь один документ в базе данных вместо их списка).

Это мои маршруты:

 router.post('/totalbalance', (request, response) => {
    const totalBalance = new TotalBalanceModelTemplate({
        totalBalance:request.body.totalBalance,
    });
    totalBalance.save()
    .then(data => {
        response.json(data);
    })
    .catch(error => {
        response.json(error);
    });
});

router.delete('/totalbalance', (request, response) => {
    request.body.totalBalance.deleteMany({}, function(err) {
        if (err) {
            response.status(500).send({error: "Could not clead database..."});           
        } else {
            response.status(200).send({message: "All info was deleted succesfully..."});
        }
    });
});

 

Это запрос axios:

 axios.post('http://localhost:4000/app/totalbalance', 
 {
        totalBalance: newTotalBalance
 });

useEffect(() => {
    axios.delete('http://localhost:4000/app/totalbalance')
        .then(res => {
            console.log('request here ', res);
        })
        .catch(function (error) {
            console.log(error);
        })
}, []);
 

Когда я запускаю приложение, в консоли Chrome я вижу ошибку «xhr.js:177 УДАЛИТЬ http://localhost:4000/app/totalbalance 500 (Внутренняя ошибка сервера)» (это связано с тем, что я использую useEffect (), передающий пустой массив в качестве зависимости, поэтому он запускается один раз после первоначального рендеринга компонента React).

Как следует УДАЛИТЬ? Может быть, мне следует объединить методы ПУБЛИКАЦИИ и УДАЛЕНИЯ?

Ответ №1:

Вам нужно вызвать deleteMany функцию в модели Мангуста. request.body.totalBalance не была бы моделью.

Похоже, вам нужен следующий .delete маршрут.

 router.delete('/totalbalance', (request, response) => {
    TotalBalanceModelTemplate.deleteMany({}, function(err) {
        if (err) {
            response.status(500).send({error: "Could not clead database..."});           
        } else {
            response.status(200).send({message: "All info was deleted succesfully..."});
        }
    });
});
 

Комментарии:

1. @grubbyGerbil — Потрясающе. Рад помочь. Удачи вам в вашем путешествии по кодированию!