Redis + node.js呈现对象列表

时间:2012-11-29 11:34:24

标签: node.js redis mustache

我正在尝试使用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

1 个答案:

答案 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