如何获得Express来返回刚刚在MongoDB中删除的对象

随意让我知道这是不是一个普遍的做法 – 我是一个相当新的程序员 – 但我想我以前见过的API,当你提交一个DELETE请求到资源(/ todo / 1234 ),一些服务器将返回刚刚在响应中删除的对象。 那是一件事吗? 如果是这样,我会有兴趣学习如何做到这一点。 这是我有:

.delete(function (req, res) { Todo.findById(req.params.todoId).remove(function (err) { if (err) res.status(500).send(err); res.send("Todo item successfully deleted"); }); }); 

此代码确实删除了该项目,但我想返回在响应中删除的项目而不是string消息。 如果这是一个正常/好的事情要做。 如果因为某种原因不正常或者不好,请告诉我为什么,我会继续前进。 或者也许有一个更常见的方法。

这是我在RFC 7231文档中find的内容:

如果一个DELETE方法被成功应用,原始服务器应该发送一个202(接受的)状态码,如果这个动作可能成功但是还没有被执行,一个204(无内容)状态码,如果这个动作已经被执行,信息将被提供,或者如果动作已经被执行并且响应消息包括描述状态的表示,则提供200(OK)状态码。

我很难解释200响应是什么意思 – 发送一个string消息( Success! )还是一个包含消息属性( {message: "Success!"} )的对象是否只有犹太人? 或者你可以在那里做任何你想做的事情? Express使用Mongoose的最佳做法是什么?

在此先感谢您的帮助,并为HTTP我的noobness抱歉。

你应该使用findOneAndRemove ! 就像是:

 Todo.findOneAndremove({ id: req.params.todoId }, function( error, doc, result) { // it will be already removed, but doc is what you need: if (err) res.status(500).send(err); res.send(doc.id); });