2016-11-20 2 views
0

내가 이렇게 내 경로 내부 코드를 많이 가지고 :노드 명시 MySQL의 연결 오류 처리 최적화

connection.query("query one", function(err, rows){ 
    if(err){ 
     console.log(err); 
    }else{ 
     connection.query("query two", function(err, rows){ 
      if(err){ 
       console.log(err); 
      }else{ 
       connection.query("query three", function(err, rows){ 
        if(err){ 
         console.log(err); 
        }else{ 
         connection.query("query four", function(err, rows){ 
          if(err){ 
           console.log(err); 
          }else{ 

          } 
         }); 
        } 
       }); 
      } 
     }); 
    } 
}); 

나는 "만약 (ERR)"많은 끝낼. 같은 시간에 효율적으로 이러한 오류를 처리하는 데 더 최적화 된 방법이 있는지 궁금합니다. 나는이 모든 오류를 처리하는 콜백 함수를 작성 할 수 있습니다

var connection2 = function(connection, query, callback){ 
    connection.query("query one", function(err, rows){ 
     if(err){ 
      console.log(err); 
     }else{ 
      callback(rows); 
     } 
    }); 
} 

을 나는 모든 "만약 (ERR)"의 제거 할 수 이런 식으로. 더 나은 솔루션, 아이디어 또는 참조가 있습니까?

답변

0

당신은 약속을 사용할 수 있습니다, 다음 코드는 그

const query = (sql, values) => { 
    return new Promise((resolve, reject) => { 
    // maybe use a connection Pool and log the statement for debugging 
    connection.query(sql, values, (err, rows) => { 
     if (err) 
     return reject(err) 
     resolve(rows) 
    }) 
    }) 
} 
에 대한 약속을 반환하는 쿼리 기능을 필요로이

query('...').then(rows => { 
}).then(query('...')).then(rows => { 
}).then(query('...')).then(rows => { 
}).catch(err => { 
    console.log(err) 
}) 

과 같을 것이다