我正在尝试使用node.js和redis,我设法使用Mustache作为模板引擎来获取一些函数来渲染单个对象。
现在我需要从列表中呈现项目,看起来像这样
list:$(id) = [node_id_1, node_id_2, node_id_3]
node:$(id) = {"value1":1, "value2":2, "value3":3, "value4":4 }
这是我使用值的方式
//get the list of nodes
redis.lrange('list:' + req.param.list_id, 0,-1, function(err, lastNode){
//request the parameters i need from the single node
var request = ['id','type'];
redis.hmget('node:' + lastNode, request, function(err, node){
//operations on the node
});
});
现在我想呈现这些节点。但我不确定最好的方法是什么。 我应该将所有内容保存在js数组中并计数以确保在读取所有节点后调用render函数吗?
可能它真的很小但我不确定,因为这是我第一次使用redis和节点
感谢,K
答案 0 :(得分:2)
这在异步土地上确实有点棘手。我推荐async模块,除其他外,它可以将数组映射到异步函数:
类似的东西:
// [nodeIds] = [1, 2, 3]
async.map(nodeIds, getNode, function (err, nodes) {
// render nodes
});
function getNode (node, next) {
redis.hmget('node' + node, ['id', 'type'], next);
}
但请注意,hmget
将返回一个包含值的数组,这些值可能是也可能不是您要在视图中呈现的值。如果某个对象更合适,您可以尝试hgetall
。