2017-05-04 186 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 
    }); 
}