2017-05-04 4 views
0

데이터를 witj 또는 Number로 가져 오는 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'); 
       } 

     }); 
나는 다음과 같이 이러한 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

예, 같은 방법을 호출하고 형식의 문자열을 전달합니다

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