node express sqlite - 将变量传递给Pug视图

时间:2017-05-02 06:44:25

标签: sqlite express pug

我正在尝试将存储到变量中的SQLite请求传递给pug模板。 如果使用传递给我的pug视图的字符串值,我的程序工作正常。但是当我使用存储的请求结果时,我总是在我的html中得到一个空的或未定义的变量。 我一直在阅读很多帖子并尝试了多种解释,但我仍然无法弄清楚我的代码有什么问题。

这是我的服务器代码

router.get('/mydata', function(req, res){   
    
    var sqlite3 = require('sqlite3').verbose();
    var mydb = new sqlite3.Database('mydb');
    var data = {};
    
    mydb.serialize(function() {
    var rowset = mydb.each("SELECT * FROM mytable", function(err, row) {
        data[row.id] = {
        name: row.name,
        };
        res.render('mydata', { 
            data: data
			});
		});
	});
});

这是我的哈巴狗代码

script.  
    var data = data
 

精度:当我在服务器端打印时,对象数据很好。

非常感谢您的帮助(如果这是一个异步的问题,那就很抱歉......)

1 个答案:

答案 0 :(得分:1)

// db.js
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('mydb');
...
module.exports = db;

// routers
var db = require('db');

router.get('/mydata', function(req, res, next) { // add error handler
    db.all('select * from mytable', function(err, rows) {
        if (err)
            return next(err);

        var data = {};
        rows.forEach(function(row) {
            data[row.id] = row.name
        });

        res.render('mydata', {data}); 
    })
});