2016-05-31 2 views
0

API를 새로 만들었습니다. 나는 Node.js와 MySQL을 사용한다. 사실 저는 모든 사용자를 얻는 두 가지 기능과 ID로 사용자를 가져 오는 기능이 있습니다. 두 기능이 모두 구현 된 경우 작동합니다. 두 함수가 모두 구현되면 모든 사용자가 함수에 입력하려고하는 함수가 ID로 사용자를 가져 와서 API가 충돌합니다. 그래서 여기 내 모델Node.js - MySQL API, 멀티 GET 함수

var connection = require("../connection"); 

function Users() 
{ 
//GET ALL USERS 
this.get = function(res) 
{ 
    console.log('Request without id'); 
    connection.acquire(function(err, con) 
    { 
     con.query('SELECT * FROM users', function(err, result) 
     { 
      con.release(); 
      if (err) 
       res.send({status: 1, message: 'Failed to get users'}) 
      else 
       res.send(result); 
     }); 
    }); 
} 

//GET USER BY ID 
this.get = function(id, res) 
{ 
    console.log('Request with ID'); 
    connection.acquire(function(err, con) 
    { 
     if (id != null) 
     { 
      con.query('SELECT * FROM users WHERE id = ?', id, function(err, result) 
      { 
       con.release(); 
       if (err) 
        res.send({status: 1, message: 'Failed to find user: ' + id}); 
       else if (result == "") 
        res.send({status: 1, message: 'Failed to find user: ' + id}); 
       else 
        res.send(result); 
      }); 
     } 
    }); 
} 

을 users.js 그리고 여기 routes.js

var users = require('./models/users'); 

module.exports = { 
configure: function(app) { 
app.get('/users/', function(req, res) { 
    users.get(res); 
}); 

app.get('/users/:id/', function(req, res) { 
    users.get(req.params.id, res); 
}); 

당신이 어떤 생각 이유가 있나요이다? 도움을 주셔서 감사합니다 :)

답변

0

같은 범위에 같은 이름의 함수 두 개를 사용할 수 없습니다.

당신은 당신의 기능

/** 
* Get all users 
*/ 
this.get = function(res) {...} 

/** 
* Get user by id 
*/ 
this.getById = function(id, res) {...} 

이름을 바꿀 수 있거나 하나 개의 기능을 가지고와 ID가

를 제공하면 확인할 수 있습니다
this.get = function(id, res) { 
    if (Number.isInteger(id)) { 
    // return the user 
    } else { 
    res = id; 
    // return all users 
    } 
} 
+0

하하 괜찮아 수치가 감사합니다! :) –