我正在构建一个正确处理DELETE
请求的Node / Mongo / Express / Jquery应用程序,但之后不会刷新页面以更新其内容。
我尝试了为this question发布的答案,但是在包括
之后req.method = 'GET'
在router.delete(url, callback)
代码块中,我没有得到不同的结果。
CODE:
router.delete('/formula-list/:id', function(req, res){
var db = req.db;
var collection = db.get('formulas');
var id = req.params.id;
var query = { "_id": id };
collection.findOneAndDelete(query);
req.method = 'GET';
res.redirect('/formula-list');
});
同样,使用jQuery AJAX调用'DELETE'请求工作正常,但我希望页面更新以反映项目已从数据库中删除。
我也试过以下无济于事:
router.delete('/formula-list/:id', function(req, res){
var db = req.db;
var collection = db.get('formulas');
var id = req.params.id;
var query = { "_id": id };
collection.findOneAndDelete(query);
collection.find({}, {}, function(e, docs){
res.render('formula-list', {
formulas: docs,
title: 'Your Formulas',
description: `List of saved user formulas from the formula generator`,
ID: 'formula-list',
keywords: 'formula generator, health kismet, nutraceutical formula builder'
});
});
});
这里的想法是,一旦我从数据库中删除了该项,我就会将该集合重新发送到要重新显示的URL。无论是否添加req.method = 'GET'
我都这样做了,但这也不起作用。
感谢您的考虑。
答案 0 :(得分:0)
这取决于您的前端结构。如果您使用的是单页应用程序,如Vue.js或React.js,那么您可以做的是在解析了ajax之后,调用get查询再次从数据库中获取所有数据。
$ajax.delete('/formula-list/:id')
.then(res => {
$ajax.get('/formula-list')
.then(res => {
this.tableData = res.data
})
})
如果您正在进行SSR,也许您可以从前端
尝试window.location.reload(true)