我正在构建一个小 Node.js 应用程序,我需要做的一件事是获取 Redis 数据存储区中的所有数据并将其显示在此特定页面上。到目前为止,我的代码如下所示:
exports.view = function (req, res) {
rclient.keys('*', function (err, reply) {
var data = {};
// Get the value for each key
for (var i = 0; i < reply.length; i++) {
rclient.GET(reply[i], function (err, value) {
data[reply[i]] = value;
});
}
res.render('view', {title: 'Datastore', data: data});
});
};
我在这里至少有两个问题。一:由于 Node.js 的异步特性,当我将 data 变量传递给我的渲染函数时,它是空的。避免这种情况的正确方法是什么?
二:变量 i 不等于我的回调中的预期值,因为循环已经增加,并且由于作用域,在调用第一次迭代的回调时 i 等于 1(它应该是 0)。
我对 Node.js 很陌生,所以我确定我做错了什么。