Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js CoffeeScript异步样式和循环_Node.js_Asynchronous_Coffeescript - Fatal编程技术网

Node.js CoffeeScript异步样式和循环

Node.js CoffeeScript异步样式和循环,node.js,asynchronous,coffeescript,Node.js,Asynchronous,Coffeescript,我正在尝试使用coffeescript学习node.js,但在理解流程时遇到了困难 我的第一个任务是解析csv文件并将解析后的记录添加到mongodb。以下是我迄今为止所做的: 我使用了一个简单的计数器变量,addRule函数在调用时递增,在回调结束时递减,检查它是否是最后一个完成的变量,以便可以调用exit。我认为这是正确的形式,但如果有更合适的方式,我愿意接受建议 我遇到的真正问题是,没有任何内容被解析或添加到数据库中。起初我意识到我不是在等待建立联系,但现在我被难住了。我想知道我是否错过

我正在尝试使用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让我知道,当您开始调试时,生产率是否保持不变:)