2014-11-23 6 views
0

sqlite 데이터베이스에서 데이터를 문자열로 가져 오는 동안 작은 문제가 발생합니다. 여기서 코드 :노드를 사용하여 sqlite 데이터를 가져 오는 중

router.get('/', function(req, res) { 
    var db = req.db; 
    var thisShouldWork = 'Hmmm'; 

    db.all('select rowid as id, value from test', function(err, rows) { 
     rows.forEach(function(row){ 
      console.log(row.id + ": " + row.value); 
      thisShouldWork += 'Heeee'; 
     }); 
    }); 
    thisShouldWork += 'What?'; 
    console.log(thisShouldWork.toString()); 

    res.send(thisShouldWork); 
}); 

변수는 'thisShouldWork 그냥 출력'HmmmWhat? 이 코드의 끝 부분에는 몇 개의 'Heeee 's'가 있어야합니다. 또한 console.log는 3 행의 데이터를 인쇄하므로 for 루프가 확실히 실행됩니다. 나는 깨닫지 않고 뭔가 잘못하고 있습니까? 아니면 같은 것을 달성하기 위해 다른/더 좋은 방법이 있습니까?

답변

1

콜백이 비동기 적으로 실행됩니다. 답에 대한

router.get('/', function(req, res) { 
    var db = req.db; 
    var thisShouldWork = 'Hmmm'; 

    db.all('select rowid as id, value from test', function(err, rows) { 
     rows.forEach(function(row){ 
      console.log(row.id + ": " + row.value); 
      thisShouldWork += 'Heeee'; 
     }); 
     thisShouldWork += 'What?'; 
     console.log(thisShouldWork.toString()); 

     res.send(thisShouldWork); 
    }); 
}); 
+0

안녕하세요, 감사합니다 : 당신이 나중에 콜백의 끝에서 이동해야하고 싶지 무엇이든

! 방금 시도하고 완벽하게 작동합니다. – afroze9

관련 문제