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