我正在尝试使用coffeescript学习node.js,但我无法绕过流程。
我的第一个任务是解析csv文件并将解析后的记录添加到mongodb。以下是我到目前为止的情况:
https://gist.github.com/1953474
我使用了一个简单的计数器var,addRule函数在调用时递增,在回调结束时递减,检查它是否是最后一个完成,因此可以调用exit。我认为这是正确的形式,但如果有更正确的方式,我愿意接受建议。
我遇到的真正问题是没有任何内容被解析或添加到数据库中。最初我意识到我不是在等待建立联系,但现在我很难过。我想知道我是否只是错过了一些关于我应该如何使用猫鼬的细节......
想法?
答案 0 :(得分: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