2016-12-27 5 views
0

私はnodejsと非同期言語が初めてです。私は、sqlite3からデータを読み込み、それらを配列にプッシュしようとしています。最後に配列を印刷します。 データを配列に正常にプッシュしました。繰り返しの内部からデータをログに記録できます。しかし、配列が空であるように外から見て配列を読み込もうとすると、反復処理後のノード配列の読み取り

var express = require('express'); 
var app = express(); 

var sqlite3 = require('sqlite3').verbose(); 
var db = new sqlite3.Database('testDb'); 

app.use(express.static(__dirname + '/public')); 

db.serialize(function() { 
    var infoCOllection = []; 

    db.each("SELECT rowid AS id, info FROM lorem", function(err, row) { 

    infoCOllection.push(row.id + ": " + row.info); 
    }); 
     console.log(infoCOllection); 
    }); 

db.close(); 

app.listen(3000); 
console.log('sever is run on port 3000'); 

私は、コールバックとnodejについて多くの例と説明を読みましたが、構造とそのコードとの関係を理解できませんでした。誰も私のコードの問題で私を助けることができます。 docs

データベース#各(SQL、[PARAM、...]、[コールバック]、[完了])

から事前

答えて

1

で おかげであなたは後arrayを得ることができますこのようなdb.eachのような

db.each("SELECT rowid AS id, info FROM lorem", function(err, row) { 
    infoCOllection.push(row.id + ": " + row.info); 
}, function(err, rows){ //callback for completion of .each method 
     console.log(infoCOllection); //you can have your array printed here 
}); 
0

あなたの答えとリンクのために非常にJyothi 。今はすべてのことが私のためにはっきりしています。

db.all("SELECT rowid AS id, info FROM lorem",function(err, rows) { 
     rows.forEach(function(row) { 
      infoCOllection.push(row.id + ": " + row.info); 
     }); 
     console.log(infoCOllection); 
    }); 

乾杯

::)私は以下のようにすべての行を取得する別の方法を試してみました