2014-07-21 2 views
0

두 열이있는 모든 열을 선택하는 MySQL의 쿼리가 있습니다. 그것은 예상대로 결과를 반환하지만 내가 원하는 것은이 같은 data에 가져온 모든 행을 저장하는 것입니다 :node.js에서 mysql의 결과를 필터링하는 방법

var response = { 
    data : result //result from mysql 
}; 

그러나 나는 모든 열을 표시하지 않습니다. 테이블에 4 개의 열이 있다고 가정 해 보겠습니다.

[ 
    { 
     row1: 'a', 
     row2: 'b', 
     row3: 'c', 
     row4: 'd' 
    }, 
    { 
     row1: 'e', 
     row2: 'f', 
     row3: 'g', 
     row4: 'h' 
    } 
] 

그리고 나는 단지 response.data에 ROW2 및 row3을 전달하려는 : MySQL의 쿼리 결과입니다. 결과가 다음과 같이 표시되기를 바랍니다.

data : [ 
      { 
       row2: 'b', 
       row3: 'c' 
      }, 
      { 
       row2: 'f', 
       row3: 'g' 
      } 
     ] 

어떻게 할 수 있습니까? MySQL 호출에서 다른 호출에서 사용되므로 row2와 row3 만 반환한다는 MySQL 쿼리를 지정하지 않습니다.

답변

0

결과가 다른 호출에서 사용되도록 지정 했으므로 실제 resopnse 개체를 변경하지 않으려한다고 생각합니다.

다음은 간단한 자바 스크립트를 사용하여 시도해 보았습니다.

var response = {data:[ 
    { 
     row1: 'a', 
     row2: 'b', 
     row3: 'c', 
     row4: 'd' 
    }, 
    { 
     row1: 'e', 
     row2: 'f', 
     row3: 'g', 
     row4: 'h' 
    } 
]}; 

var newResponse = {};  
newResponse.data = response.data.map(function (rows) { 
    return {row2:rows.row2,row3:rows.row3}; 
}); 

console.log(newResponse); //your result object as you wanted 
console.log(response); // the actual response object, just to verify it doesn't got changed 
+0

감사! 예상대로 작동합니다. – krisbie

+0

@ user3094292는 다른 호출에서 사용 되었기 때문에 SQL을 수정하고 싶지 않다고 말하는 것 같습니다. 응답을 수정하는 것은 우리가이 경우에하고 싶은 것과 정확히 같습니다. 지도 함수를 호출 할 수 있도록 그냥 모호한 응답을하는 것은 조금 바보입니다. – Jess

0

underscore map function을 사용하십시오. 이처럼

:

var response = {}; 
response.data = _.map(result, function(row) { 
    var newRow = {}; 
    newRow.row2 = row.row2; 
    newRow.row3 = row.row3; 
    return newRow; 
}); 

아니면지도를 단순화하고 선택할 수 있습니다.

var response = {}; 
response.data = _.map(result, function(row) { 
    return _.pick(row, 'row2', 'row3'); 
}); 
관련 문제