api调用的URL方法

时间:2017-05-04 10:04:17

标签: angularjs node.js

我正在创建一个API,我在其中获取数据或者数字或名称。

 var method = require("../../app/models/model_METHOD.js");
    module.exports = (function(){
        'user strict';
    var router=require('express').Router();
        router.get('/search',function (req,res) {   

           var name = req.query.name;
           var  number = req.query.number;
           var query       = {};  
            if(name){
                 var pattern = new RegExp(name,"i");
                 query = {Name: {$regex: pattern}},{Name:1,_id:0};
                method.find(query).lean()
                .limit(20)
                .exec(function(err,results){
                    results=results.map(function(doc){return doc.Name});
                            if(err){
                                console.log("DB error");
                                console.log(err);
                                res.status(500).send("Error");
                            }
                            else if(results.length!=0){ 
                            console.log(results.length);


                                res.status(200).send(results);
                            }
                            else{
                                res.status(404).send('no matching records found');
                            }
                });
            }
            else if(number){

                var pattern = new RegExp(number,"i");
                console.log(pattern);
                 query = {Number: {$regex: pattern}},{Number:1,_id:0,Code:0,Name:0,collection:0};
                method.find(query).lean()
                .limit(20)
                .exec(function(err,results){
                    results = results.map(function(item){return item.Number});
                            if(err){
                                console.log("DB error");
                                console.log(err);
                                res.status(500).send("Error");
                            }
                            else if(results.length!=0){ 
                               console.log(results.length);
                                res.status(200).send(results);
                            }
                            else{
                                res.status(404).send('no matching records found');
                            }
                });

            }
            else{
                    res.status(400).send('input can not be empty');
                }

        });

我正在设置调用这些api的URL,如下所示: -

function getName(key) {
            return $http({
                method: 'GET',
                url: 'api/method/search?name=' + key.key
            });
        }

        function getNumber(key) {
            return $http({
                method: 'GET',
                url: 'api/method/search?number=' + key.key
            });
        }

虽然上面的方法对我有用但是我可以在一个URL中调用它,而不是创建两个不同的函数,如果它的名称是name=' + key.key,那么如果数字是number=' + key.key。 这样的事情: - 'api/method/search?name=' + key.key or number=' + key.key

1 个答案:

答案 0 :(得分:1)

是的,调用相同的方法并传递类型为

的字符串
function get(key, type) {// type will have to be either "name" or "number"
  return $http({
      method: 'GET',
      url: 'api/method/search?' + type + '=' + key.key
  });
}