req.query的过滤函数

时间:2017-01-10 16:25:09

标签: node.js mongodb express

目前我有这个:

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)替换mongo数据 return filtro("nome",req.query.nome)

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

1 个答案:

答案 0 :(得分:1)

为了简化它,你可以做类似......

~/.config/fish/functions/fish_prompt.fish