所以我可以在使用下面的代码时删除数据条目。它会查找_id为' 1'的条目。并删除它。但是,如果客户位于' / people'。
app.delete('/people', (req, res)=>{
db.collection('people').deleteOne({
_id: '1'
},
(err, result) => {
if(err) return res.send(500, err)
res.send('Entry has been deleted')
})
})
但是,如果客户端导航到' / people /:_ id'要查看数据条目并尝试然后尝试从该URL路径中删除该命令未经过的条目。如果我在邮递员中尝试它,它会通过,但它不能在浏览器中工作。
app.delete('/people/:_id', (req, res)=>{
var id = (req.params.id)
db.collection('people').deleteOne({
_id: '1'
},
(err, result) => {
if(err) return res.send(500, err)
res.send('Entry has been deleted')
})
})
如果您没有明确导航到其位置,那么您是否只能删除一个条目?或者我错误地设置了终点?还有最后一个问题我如何设置多个删除按钮。我想要一个按钮删除一个指定条目,另一个按钮删除所有条目。
如果您想查看完整的代码库,请在评论中告诉我。谢谢。
答案 0 :(得分:1)
在浏览器中导航到网址会执行GET
请求,但您的路由仅设置为允许DELETE
个请求(app.delete(...)
)。
有几种方法可以解决这个问题:
声明 GET
和DELETE
路线。他们可以使用相同的处理函数:
let handler = (req, res) => {
var id = (req.params.id)
...
};
app.delete('/people/:_id', handler);
app.get('/people/:_id', handler);
使用method-override
,但我不确定这是否适用于GET
次请求(可能需要您使用POST
)。< / p>
我想要一个按钮删除一个指定条目,另一个按钮删除所有条目。
您可以使用已经提到过的app.delete('/people', ...)
。您不是只删除一个条目,而是全部删除它们。因此,一个按钮会请求/people/ID
,另一个按钮会请求/people