使用MongoDB,Node和Express删除DELETE请求后更新页面

时间:2017-01-09 23:55:14

标签: jquery node.js mongodb express

我正在构建一个正确处理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'我都这样做了,但这也不起作用。

感谢您的考虑。

1 个答案:

答案 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)