2012-05-21 45 views
0

我是node.js和express.js的新手。我知道這有點傻,但我真的不知道如何解決這個問題。希望有人能幫助我。如何渲染express.js中的redis記錄?

我有一些信息存儲在Redis中。

redis 127.0.0.1:6379> hgetall "store1" 
1) "apple" 
2) "10" 
3) "banana" 
4) "15" 
5) "pear" 
6) "20" 
7) "name" 
8) "A Street" 
redis 127.0.0.1:6379> hgetall "store2" 
1) "apple" 
2) "30" 
3) "banana" 
4) "40" 
5) "pear" 
6) "50" 
7) "name" 
8) "B Street" 

我想顯示在一個表中的這些信息。使用express.js,我創建了以下路由文件。

路線/ report.js

var redis = require('redis'), 
    redisclient = redis.createClient(); 

exports.index = function(req, res){ 
    redisclient.on("error", function (err) { 
     console.log("Error " + err); 
    }); 

    var reports = []; 
    redisclient.keys("*", function(err, stores) { 
    for (var store in stores) { 
     redisclient.hgetall(store, function(err, figures) { 
     reports.push(figures); 
     }); 
    } 
    }); 

    res.render('report', { title: 'Store Report', reports: reports }); 
}; 

而且還有以下jade查看文件。

的意見/ report.jade

h1= title 
table(class="table table-striped table-condensed") 
    thead 
    tr 
     th store 
     th apple 
     th banana 
     th pear 

    tbody 
    - each report in reports 
    !=partial('partials/record', {store:record.name, apple:record.apple, banana:record.banana, pear:record.pear}) 

的意見/諧音/ record.jade

tr 
    td= store 
    td= apple 
    td= banana 
    td= pear 

當我打開localhost:3000/report,我得到的表結構,沒有內容。

我知道redis調用是異步的。在redis返回任何結果之前,report.js文件呈現report.jade

請問誰能告訴我我該如何解決這個問題?

謝謝!

回答

1

嘗試使用async模塊,執行回調以在所有IO操作完成時呈現結果。

從異步自述

代碼例如:

async.parallel([ 
    function(){ ... }, 
    function(){ ... } 
], callback);