2017-11-01 1 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 
}); 
}; 

이은 비동기 적으로 실행되기 때문에가 null 반환 내 코드 만 2 을 console.log (models_array)입니다. 첫 번째 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 
     }); 
});