2012-03-01 51 views
1

我正在嘗試使用coffeescript學習node.js,但在繞過流程時遇到了困難。Node.js CoffeeScript異步樣式和循環

我的第一個任務是解析一個csv文件並將解析的記錄添加到mongodb中。以下是我迄今:

https://gist.github.com/1953474

我用一個簡單的計數器VAR,關於調用和遞減在回調結束的addRule功能的增量,檢查,看它是否是最後一個完成如此退出可以被調用。我認爲這是正確的形式,但如果有更合適的方式,我願意提出建議。

我遇到的真正問題是沒有任何東西會被解析或添加到數據庫中。起初,我意識到我不是在等待連接建立,但現在我很難過。我想知道我是否錯過了一些關於我應該如何與貓鼬合作的細節...

想法?

+0

告訴我們什麼意見打印(從util.print),除此之外,我建議避免貓鼬和使用本地驅動程序。 – Raynos 2012-03-01 22:28:50

回答

0

你的櫃檯專門有兩個錯誤。

如果記錄數爲零,則不要退出。

而你之後遞減而不是之前。 n_out--返回n_out,--n_out返回n_out - 1

您的其他錯誤是使用CoffeeScript,您會後悔的。

addRules = (records) -> 
    n_out = 1 
    next =() -> 
    if --n_out is 0 
     exit() 
    next() 
    addRule = (r) -> 
    n_out++ 
    util.print n_out 
    Rule.update {state: r.state}, r, {upsert: true}, (err) -> 
     if err 
     util.print r.state + ": " + err + "\n" 
     else 
     util.print "processed " + r.state + " rule\n" 
     next() 
    addRule(r) for r of records 
+1

這是這個AND ...沒有什麼東西正在使用<<添加到記錄數組中。我糾正了遞減錯誤,並使用了推而不是<<,並且它工作。 https://gist.github.com/1954107 @Raynos:爲什麼對CoffeeScript有偏見? – Tim 2012-03-01 23:54:48

+0

@Tim https://twitter.com/#!/Raynos2/status/173884231473299457 – Raynos 2012-03-01 23:57:58

+0

好吧,好吧,但對我來說,更有效率的勝過那種純粹的感性。我發現CoffeeScript是我喜歡的關於Ruby和Python的一個很好的混合體,但總體來說性能更好 - 我想他們都是他自己的。再次感謝您的幫助! – Tim 2012-03-02 03:38:48