Проблема с AJAX DELETE - PullRequest
       2

Проблема с AJAX DELETE

0 голосов
/ 29 ноября 2018

Я не уверен, что я здесь делаю не так?GET отлично работает с той же информацией, но DELETE продолжает выдавать мне 500 Внутренняя ошибка сервера, и мои журналы сервера говорят: «StoredProduct.delete не является функцией»

Ради этого поста яя включаю маршрут GET и GET JS ниже, просто чтобы показать, что они работают, так что я думаю, что мои маршруты настроены правильно?

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

router.get('/:productID', (req, res, next) => {
  StoredProduct
    .findOne({
      _id: req.params.productID
    })
    .then(product => {
      res.status(201).json(product);
    });
});

router.delete('/:productID', (req, res) => {
  StoredProduct
    .delete(req.params.productID);
  res.status(204).end()
    .catch(err => {
      console.log(err);
      res.status(500).json({
        error: err
      });
    });
});

А это мой JS

  $.ajax({
    type: 'GET',
    url: '/products/' + productID,
    success: function(product) {
      $editProdName.append(`${product.name}`);
      $addPrice1.val(product.prices[0].price);
      $addPrice2.val(product.prices[1].price);
      $addPrice3.val(product.prices[2].price);
      $selectedUnit.val(product.size);
    }
  });

  $('#deleteme').on('click', function(e) {
    e.preventDefault();
    console.log(productID);
    $.ajax({
      type: 'DELETE',
      url: '/products/' + productID,
      success: function(){
        console.log('yippee');
      }
    });
  });

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Вы можете использовать mongoose.deleteOne () и осуществлять поиск по идентификатору и удалять:

router.delete('/:productID', (req, res) => {
  StoredProduct
    .deleteOne({ _id: req.params.productID}).then(data =>
  res.status(204).end()).catch(err => {
      console.log(err);
      res.status(500).json({
        error: err
      });
    });
});
0 голосов
/ 29 ноября 2018

Используете ли вы мангуста?

Если это так, попробуйте

StoredProduct.deleteOne({ id: req.params.productID }, function (err) {});

Также из http://api.jquery.com/jquery.ajax/:

Примечание об устаревании: jqXHR.success ()Обратные вызовы jqXHR.error () и jqXHR.complete () удалены с jQuery 3.0.Вместо этого вы можете использовать jqXHR.done (), jqXHR.fail () и jqXHR.always ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...