首页 > 解决方案 > 节点 api GET 状态请求

问题描述

我正在获取该项目的ID当前status状态,它可以工作,但我想检查它是否处于活动状态,如果active: false然后返回 - > 状态 404 ,消息:状态未激活。

我的问题是我似乎无法从请求中获得主动返回,我对此很陌生,所以我可能理解错误或犯了一个简单的错误,提前感谢您的帮助。

文档:

{
     "_id" : ObjectId("5b3f7b2efe8d1f3ef8096dfd"),
     "name" : "Brand Name",
     "active" : false,
     "__v" : 0
}

代码:

// RETURN ACTIVE STATUS OF SINGLE BRAND FROM DATABASE

router.get('/:id/ActiveStatus', (req, res) => {
    var id = req.params.id;

    //MY ATTEMPTED TO GET THE ACTIVE STATUS = undefined  
    var status = req.query.active;
    console.log(status);

    if(status !== true){
        return res.status(404).send({message: 'Status not found.'});
    }

    if(!ObjectID.isValid(id)){
        return res.status(404).send({message: 'Invalid Object ID provided.'})
    }

    Brand.findById(id, {active: 1}).then((brand) => {
        if(!brand){
            return res.status(404).send({message: 'Error, status not active.'})
        }
            res.send({brand});
    }).catch((e) => {
        return res.status(404).send(e);
    });
});

标签: javascriptnode.jsmongoose

解决方案


//MY ATTEMPTED TO GET THE ACTIVE STATUS = undefined  
var status = req.query.active;

如果您想获取状态参数,那么根据您的代码,客户端在调用您的 api 时必须提供它。所以客户端api调用应该是-

https://<url>/<id>/ActiveStatus?active="some value"

之后,您可以像在代码中那样访问它。

var status = req.query.active;

如果您想从请求参数中获取它,您可以像这样定义您的路线

// RETURN ACTIVE STATUS OF SINGLE BRAND FROM DATABASE

router.get('/:id/ActiveStatus/:active', (req, res) => {
    //your code
});

在这种情况下,您可以通过请求参数访问它,就像您对 id 所做的那样

var status = req.params.active;

推荐阅读