2011-07-03 53 views
0

請檢查下面的代碼並提出更好的方法來實現相同。使用CoffeeScript在node.js上從Redis提取對象數組的更好方法

我在Redis數據庫中存儲JSON字符串。爲了提取一個對象數組,我使用了下面的代碼。只是爲了學習,雖然我想找到更好的方法來做同樣的事情。這裏是CoffeeScript代碼:

redis = require "redis" 
client = module.exports.client = redis.createClient() 

getRecord = module.exports.getRecord = (key, fn) -> 
    client.get key, (err, result) -> 
    fn err, null if err 
    obj = JSON.parse(result) 
    fn null, obj 

getDataSet = module.exports.getDataSet = (pattern, fn) -> 
    client.keys pattern, (err, result) -> 
    fn err, null if err 
    dataSet = [] 
    length = result.length 
    count = 0 
    for key in result 
     getRecord key, (err, obj) -> 
     fn err, null if err 
     count = count + 1 
     dataSet.push obj 
     fn null, dataSet if count is length 

回答

3

我認爲你的代碼非常穩定。只是要注意你的

for key in result 

循環正在創建列表理解;這意味着如果result.length很大,您將看到顯着的性能開銷甚至內存問題。爲了避免這種情況,你需要添加一個明確的return

for key in result 
    getRecord key, (err, obj) -> 
    ... 
return 

有介紹的只是這種情況下,void function syntax的建議,但沒有CoffeeScript中的核心提交似乎很喜歡它。

相關問題