我有以下代码读取CSV文件,然后从数据库中提取文档:
(kbd "<C-right>")
但是当我打电话给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})
任何人都可以看到为什么我会收到此错误?有关如何绕过它的任何建议吗?
答案 0 :(得分: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;
}
});
答案 1 :(得分:0)
或者......您可以尝试将回调包装到
中 Meteor.bindEnvironment()
会像
fs.readFile process.env.PWD + '/data/errorports.csv', 'utf8',
Meteor.bindEnvironment(function(err, data) {
[..your code..]
});