2012-03-01 80 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