2014-11-23 41 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 2014-11-24 10:53:55