节点api GET状态请求

时间:2018-10-17 05:54:14

标签: javascript node.js mongoose

我正在获取项目的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);
    });
});

1 个答案:

答案 0 :(得分:1)

//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一样通过request参数访问它

var status = req.params.active;