Javascript 查询数据库时出现“没有光纤无法等待”错误?

Javascript 查询数据库时出现“没有光纤无法等待”错误?,javascript,node.js,mongodb,meteor,coffeescript,Javascript,Node.js,Mongodb,Meteor,Coffeescript,我有以下代码读取CSV文件,然后从数据库中提取文档: fs.readFile process.env.PWD + '/data/errorports.csv', 'utf8', (err, data) -> if err console.log "Error reading csv", err return rows = data.split('\n') for row in rows columns = row.split(',

我有以下代码读取CSV文件,然后从数据库中提取文档:

fs.readFile process.env.PWD + '/data/errorports.csv', 'utf8', (err, data) ->
    if err
      console.log "Error reading csv", err
      return
    rows = data.split('\n')
    for row in rows
      columns = row.split(',')
      airportCode = columns[0]
      airport = Airports.findOne({_id: airportCode})
      console.log 'airport:', airport
但是当我调用Airports.findOne{u id:airportCode}时,它抛出错误:

/Users/abemiessler/.meteor/packages/meteor-tool/.1.3.4.19lp8gr++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:159
   throw new Error('Can\'t wait without a fiber');
         ^
Error: Can't wait without a fiber

有人知道我为什么会犯这个错误吗?有没有关于如何绕过它的建议?

您可能需要利用它使异步函数在一个更大的内存中运行……这将允许您在内存中执行meteor代码。这里有一个例子

var syncReadFile = Meteor.wrapAsync(fs.readFile);

syncReadFile(process.env.PWD + '/data/errorports.csv', 'utf8', function(err, data) {
    if (err) {
      console.log "Error reading csv", err;
      return;
    }

    rows = data.split('\n');
    for (row in rows) {
      columns = row.split(',');
      airportCode = columns[0];
      airport = Airports.findOne({_id: airportCode});
      console.log 'airport:', airport;
  }
});

或者。。。您可以尝试将回调打包到

流星环境

大概是

fs.readFile process.env.PWD + '/data/errorports.csv', 'utf8',
Meteor.bindEnvironment(function(err, data) {
  [..your code..]
});