最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

req.query的过滤功能

网站源码admin14浏览0评论

req.query的过滤功能

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);
    });   

}

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论