req.query的过滤功能

编程入门 行业动态 更新时间:2024-10-05 11:21:28

req.query的过滤<a href=https://www.elefans.com/category/jswz/34/1771378.html style=功能"/>

req.query的过滤功能

目前我有这个:

router.get('/contatos',function(req,res){
if(req.query.nome){
     Contato.find({ nome: req.query.nome }, function (err, contato) {
         console.log(contato);
        if (JSON.stringify(contato) == "[]") {
            return res.status(404).json({ Error: "that contact doesn't exist" });
        }

        if (err) {
            return res.status(500);
        }
        return res.send(contato);
    });   
}

if(req.query.email){
     Contato.find({ email: req.query.email }, function (err, contato) {
        if (!contato) {
            return res.status(404).json({ Error: "that contact doesn't exist" });
        }

        if (err) {
            return res.status(500);
        }
        return res.send(contato);
    });   
}

if(Object.keys(req.query).length === 0){
 Contato.find(function (err, contatos) {
        if (JSON.stringify(contatos) == "{}") {
            return res.status(404).json({ Error: "there are no contacts" });
        }

        if (err) {
            return res.status(500);
        }
        return res.send(contatos);
    }).populate('emergencia');      
}

if(!req.query.nome && !req.query.email){
    return res.status(400);
}

});

如你们所见,mongo查询几乎唯一相同的是更改了我传递的值,因此要更改此值,我尝试执行以下功能

function filtro(campo,valor,req,res){
if(arguments[0] != "undefined" && arguments[1] != "undefined"){
   // i pass no parameters to filtro so here i just get all values  
}
else{
    Contato.find({campo:valor},function(err,contatos){
        if(err){
            return res.status(500);
        }
        return res.send(contatos);
    });
}

}

然后在上面的第一个代码中,我将return filtro("email",req.query.email)数据替换为return filtro("email",req.query.email) return filtro("nome",req.query.nome)

我想知道我在做的事是否正确,我只是想念一些东西,因为在邮递员那里,它没有给我任何回应,它会不断加载

回答如下:

为了简化一点,您可以执行类似...的操作。

router.get('contatos', function(req, res){
    var query = {};
    if(req.query.nome) query.nome = req.query.nome;
    if(req.query.email) query.email = req.query.email;

    Contato.find(query, function (err, contato) {
        if(err) return res.json({status : 500, error : err});
        if(!contato) return res.json({status : 404, error : "Contact not found"});

        return res.json(contato);
    });   

}

更多推荐

req.query的过滤功能

本文发布于:2024-05-06 20:01:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1753793.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:功能   req   query

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!