如何让Express返回我刚刚在MongoDB中删除的对象

时间:2015-12-03 15:46:22

标签: node.js mongodb http express mongoose

如果这不是一种常见的做法,请随时告诉我 - 我是一个相当新的程序员 - 但我以为我过去看过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");
    });
});

此代码 删除该项,但我想返回在响应中删除的项而不是字符串消息。如果那是正常/好的事情。如果出于某种原因不正常或没问题,请告诉我原因,我会继续前进。或许有一种更常见的方式。

这是我在RFC 7231 docs中找到的:

  

如果成功应用DELETE方法,原始服务器应该是   如果操作可能成功,则发送202(已接受)状态代码   但尚未颁布,如果是204(无内容)状态代码   行动已经颁布,不再提供进一步的信息,   如果行动已经制定,则为200(OK)状态代码   响应消息包括描述状态的表示。

我很难解释200响应意味着什么 - 发送字符串消息(Success!)或包含消息属性的对象({message: "Success!"})只是犹太人?或者你可以做任何你想做的事吗? Express使用Mongoose的最佳做法是什么?

提前感谢您的帮助,并抱歉我的HTTP内容无效。

1 个答案:

答案 0 :(得分:2)

你应该使用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);
});