2017-11-01 14 views
1

私はNodejs、Express、Leveldbを初めて使用しています。db接続後のレンダリング - Nodejs LevelDB

レベルを使用してdbを作成し、パラメータを渡したいと思います。

exports.index = function(req, res) { 
var models_array = []; 
db.models.createValueStream() 
    .on('data', function (data) { 
     console.log(data.name); 
     models_array.push(data.name); 
     console.log(models_array); // 1st 
    }); 

console.log(models_array); //2nd 
res.render('home', { 
    title: 'Home', 
    models:models_array 
}); 
}; 

これは私のコードが、第二にconsole.log(models_array)彼らは非同期で実行されているためがnullを返すされています。 第1のconsole.logも私が期待したものを返しています。

これを正しく行うにはどうすればいいですか?

テンプレートに適切なデータを渡すことができるようにします。

答えて

1

自分自身が見つかりました。 .once()を使用できます。

var models_array = []; 
db.models.createValueStream() 
    .on('data', function (data) {   
     models_array.push(data.name);   
    }).once('end', function() {     
     res.render('home', { 
      title: 'Home', 
      models:models_array 
     }); 
});