数据库连接完成后渲染 - Nodejs LevelDB

时间:2017-11-01 09:44:05

标签: node.js express leveldb

我是Nodejs,Express和Leveldb的新手。

我使用level创建了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,因为它们是异步运行的。 即使是第一个console.log也会返回我的预期。

如何正常运作?

这样我就可以将正确的数据传递给模板了。

1 个答案:

答案 0 :(得分:0)

我找到了自己。我可以使用.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
        });
});