【问题标题】:RESTful API deleting invalid dataRESTful API 删除无效数据
【发布时间】:2018-04-15 19:16:22
【问题描述】:
router.delete('/:id', function(req, res){
    user.remove({

        _id: req.params.id 

    }, function(err, users) {

        if(err) {
            res.status(404).send({
                message: "Invalid User",
                data: []    
            });

        } else {
            res.status(200).send({
                message: "User deleted",
                data: []
            });
        }
    });
});

我尝试为我的 RESTful API 实现 DELETE 端点。 当我在邮递员上测试时,它成功删除了现有数据, 但是当我尝试删除无效数据时,它仍然给我一条删除消息 响应状态为 200。

我犯了什么错误?

【问题讨论】:

    标签: node.js rest api express


    【解决方案1】:

    当您删除不存在的数据时,代码可以正常工作。

    但是如果在 mongodb 中工作,您可以检查返回 nMatched 的用户值。 并且对于所有数据库,它们都包含这种类型的标志(这里标志表示用户对象中的“nMatched”字段,您可以通过打印users对象进行检查)。对于 mongodb,它们包含 01 中的值

    你可以这样吗?

    function(err, users) {
    
            if(err) {
                res.status(404).send({
                    message: "Invalid User",
                    data: []    
                });
    
            } else if (users.nMatched === 0) {
    
                res.status(400).send({
                    message: "User not exist deleted",
                    data: []
                });
            } else {
                res.status(200).send({
                  message: "User deleted",
                  data: []
                 });
               }
        });
    

    【讨论】:

    • 对不起,我不明白你的意思“对于所有数据库,它们都包含这种类型的标志。对于 mongodb,它们包含 0 或 1 中的值”
    • 标志表示您有users 对象,该对象在数据库调用后返回,它将包含一些键值,其中包含是否删除任何内容的数据。如果是 mongodb,您可以像这样访问它 users.nMatched 。只需打印用户,您将获得所有状态标志。
    • 那么“无效用户”和“用户不存在已删除”有什么区别?
    • 此外,当我不断请求删除同一用户时,它不断给我“用户已删除”。不应该只在第一次通话时给我“用户已删除”吗?
    • “无效用户”表示上述代码中的if any error comes in query,“用户不存在已删除”表示data is not there in database。这是给你答案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 2021-11-14
    • 1970-01-01
    • 2012-09-04
    • 2013-03-28
    • 1970-01-01
    相关资源
    最近更新 更多