Node.js CoffeeScript异步样式和循环
我正在尝试使用coffeescript学习node.js,但在理解流程时遇到了困难 我的第一个任务是解析csv文件并将解析后的记录添加到mongodb。以下是我迄今为止所做的: 我使用了一个简单的计数器变量,addRule函数在调用时递增,在回调结束时递减,检查它是否是最后一个完成的变量,以便可以调用exit。我认为这是正确的形式,但如果有更合适的方式,我愿意接受建议 我遇到的真正问题是,没有任何内容被解析或添加到数据库中。起初我意识到我不是在等待建立联系,但现在我被难住了。我想知道我是否错过了一些关于如何与猫鼬合作的细节Node.js CoffeeScript异步样式和循环,node.js,asynchronous,coffeescript,Node.js,Asynchronous,Coffeescript,我正在尝试使用coffeescript学习node.js,但在理解流程时遇到了困难 我的第一个任务是解析csv文件并将解析后的记录添加到mongodb。以下是我迄今为止所做的: 我使用了一个简单的计数器变量,addRule函数在调用时递增,在回调结束时递减,检查它是否是最后一个完成的变量,以便可以调用exit。我认为这是正确的形式,但如果有更合适的方式,我愿意接受建议 我遇到的真正问题是,没有任何内容被解析或添加到数据库中。起初我意识到我不是在等待建立联系,但现在我被难住了。我想知道我是否错过
想法 您的计数器特别有两个bug 如果记录数为零,则不调用exit 而你的减量是在之后而不是之前
n\u out--
返回n\u out
,--n\u out
返回n\u out-1
你的另一个错误是使用咖啡脚本,你会后悔的
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
告诉我们打印什么评论(来自util.print),然后我建议避免使用mongoose,而是使用本机驱动程序。。。没有任何东西被添加到记录数组中,好吧,但对我来说,更高效胜过那种纯粹的感觉。我发现CoffeeScript很好地融合了Ruby和Python中我喜欢的东西,但总体来说性能更好——我想这两种东西各有各的。再次感谢您的帮助@Tim让我知道,当您开始调试时,生产率是否保持不变:)