我正在使用node_redis为从redis获得的对象提供JSON表示形式的节点服务。我认为这可能是你很多人相对基本的东西,但我很难过。我得到了我发送我的回复之前我已经通过我所有的哈希和存储它们。这里的CoffeeScript的:如何将redis哈希转换为JSON?
objects = []
client.keys 'objects*', (err,keys) ->
for key in keys
client.hgetall key, (err,obj) ->
objects.push obj
response.end JSON.stringify objects
和生成的JavaScript:
objects= [];
client.keys('objects*', function(err, keys) {
var key, _i, _len, _results;
_results = [];
for (_i = 0, _len = keys.length; _i < _len; _i++) {
key = keys[_i];
_results.push(client.hgetall(key, function(err, obj) {
return objects.push(obj);
}));
}
return _results;
});
return response.end(JSON.stringify(objects));
我不知道如何把我的代码在度假,而它等待内的东西来完成。我怀疑有办法处理它,但我想不出任何事情。谢谢大家。
谢谢......这*将解决我的问题。我认为有一些我错过的模式会延迟进一步的执行,直到所有事情都完成了,但我以前错了很多次。关于“改变你如何储存哈希”,我总是乐于接受建议。我刚刚从关系数据库领域脱颖而出,而且我习惯于根据任意标准轻松获取一堆“对象”。 – CircusNinja 2012-01-12 03:13:05
我用redis花了一段时间,最初试图弄清楚如何构建我的数据以便查询。我发现自己写了很多带有“内部”和“外部”异步函数的节点代码,然后在最后呈现响应。最终改变了我的模式,所以我可以将数据拉入,然后过滤它。尽管如此,取决于你的使用案例,这样做有合理的理由。 – tjarratt 2012-01-12 17:34:50