2017-05-04 189 views
0

我正在创建一个API,在其中获取数据或数字或名称。api调用的URL方法

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

     }); 

我设置的URL,调用这些API的如下: -

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

虽然上述方法为我工作,但不是创建两个不同的功能,我可以把这个在同一个网址,如果它的名字那么name=' + key.key否则如果号码那么number=' + key.key。 事情是这样的: - 'api/method/search?name=' + key.key or number=' + key.key

回答

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