尝试使用Express.js&Jade从MongoDB数据库删除条目

我创build了一个应用程序,添加和删除“案例研究”。 我可以很容易地添加条目,但是当我尝试删除一个条目时,我将表单页面redirect到表单操作URL附加到最后。 当我回到原始表单页面时,实际上条目会被删除,但理想情况下,我希望能够在添加/删除条目时保持在同一页面上。

form.jade

form(method="POST", action="/form/#{entry._id}?_method=DELETE") input(type="submit", value="Delete") 

form.js

 /* Delete Case Study */ router.delete('/:id', function (req, res) { Entry.findById(req.params.id) .exec(function(err, entries) { // changed `if (err || !doc)` to `if (err || !entries)` if (err || !entries) { res.statusCode = 404; res.send({}); } else { entries.remove(function(err) { if (err) { res.statusCode = 403; res.send(err); } else { res.send('Deleted entry with link: ', entries.link); } }); } }); }); 

这是一个链接到我的应用程序Heroku,以及我的GitHub回购:

https://hidden-wave-1121.herokuapp.com/form

https://github.com/hlmurray/express-app

这里的任何帮助将是伟大的,谢谢!

您可以使用JavaScript http请求而不是表单发布/提交,并使用onclick函数在您的删除button上进行连接,inheritance一个涵盖http请求的StackOverflow问题。

 input(type="button", onclick="deleteItem({entry._id})") function deleteItem(theID) { var xmlHttp = new XMLHttpRequest(); xmlHttp.open( "DELETE", '/form/'+ theID, false ); xmlHttp.send( null ); return xmlHttp.responseText; } 

此外,它看起来像你需要更新你的路线在form.js,以便它读/forms/:ID。

这不会摆脱页面上的HTML,所以你需要更多的JavaScript来删除该DOM元素。 通常,当我使用MEAN堆栈时,我使用Angular $ http方法完成所有的表单post和调用,这样您就不会有任何页面更改。 我仍然使用表单,而不是标准提交,我使用ng-submit,这可以防止页面更改。

希望有所帮助,让我知道如果我可以包括其他任何东西,我会更新答案。