我不确定我在做什么错吗? 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');
}
});
});
答案 0 :(得分:1)
你用猫鼬吗?
如果是这样
StoredProduct.deleteOne({ id: req.params.productID }, function (err) {});
也来自http://api.jquery.com/jquery.ajax/:
弃用注意事项:从jQuery 3.0开始,jqXHR.success(),jqXHR.error()和jqXHR.complete()回调已删除。您可以改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。
答案 1 :(得分:1)
您可以使用mongoose.deleteOne()并按ID搜索并删除:
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
});
});
});