2014-11-08 2 views
0
mysql.query('SELECT accountID,deviceID FROM EventData WHERE accountID = "' 
     + acc 
     + '" AND deviceID = "' 
     + deviceID 
     + '" ORDER BY timestamp DESC LIMIT 1 ', 
      function(err,rows,fields) {     
       if (rows.length > 0) {     
        var accountID = rows[0].accountID; 
        var deviceID = rows[0].deviceID; 
        var re2 = ({ 
         title: deviceID,      
        });      
        console.log(re2) 
        console.log("aaa")  
      } 
    ); 

위의 코드는 다음과 같은 출력이 생성Node.js를 MySQL의 푸시 콜백

[{ title: 'dev1'}] 
    aaa 
    [{ title: 'dev2'}] 
    aaa 

을하지만 다음을 참조 할 것으로 예상 : 내가 잘못 뭐하는 거지

[{ title: 'dev1'}, 
    { title: 'dev2'}] 
    aaa 

?

+0

먼저 SQL 쿼리 문자열을 연결하지 말고 더 안전하게 자리 표시 자 구문을 사용하십시오. 둘째로, 현재 보여준 코드는 여러분이 보여준 결과물을 생성 할 수 없습니다. 특히're2'가 배열이 아니기 때문에, 그것은 객체입니다. – mscdex

답변

1

행을 반복하지 않고 re2에 첫 번째 타이틀을 추가했습니다.

이 코드는 작동합니다 :

mysql.query('SELECT accountID,deviceID FROM EventData WHERE accountID = ? AND deviceID = ? ORDER BY timestamp DESC LIMIT 1', [acc, deviceID], 
     function(err,rows,fields) { 
      if (rows.length > 0) { 
       var re2 = [ ];      
       for (var i = 0; i < rows.length; i++) { 
        re2.push({ title: rows[i].deviceID }); 
       }      
       console.log(re2); 
       console.log("aaa") ; 
      } 
     } 
); 

내가 자리에 매개 변수를 전달주의 대신 문자열로 명시 적으로 연결하여주십시오.

관련 문제