2017-03-16 6 views
0

私はCSVファイルを読み込み、データベースから文書を取り出し、次のコードがあります。dbを照会するときに「ファイバーなしで待機できません」というエラーはありますか?

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({_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 

誰でも見ることができますこのエラーが発生しますか?どのようにそれを回避するための任意の提案?

答えて

1

Meteor.wrapAsync()を使用する必要があります(非同期関数をFider内で実行するには...内部で流星コードを実行できるようにする)。ここに例があります。

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; 
    } 
}); 
0

それとも...あなたは

fs.readFile process.env.PWD + '/data/errorports.csv', 'utf8', 
Meteor.bindEnvironment(function(err, data) { 
    [..your code..] 
}); 
ようなものになるだろう

Meteor.bindEnvironment()

にあなたのコールバックをラップしようとすることができます

関連する問題