2013-10-14 38 views
5

目录在流星我可以读这样的文件:迭代通过与Assets.getText

myjson = JSON.parse(Assets.getText("lib/myfile.json")) 

现在我想通过文件夹进行迭代,并阅读所有可用的JSON文件。如果不安装额外的NPM软件包,最好的方法是什么? 谢谢你的时间。

回答

2

我包休伯特OG了代码与Meteor.bindEnvironment功能。我相信这是必要的,因为在Meteor环境之外没有光纤。 请参阅https://www.eventedmind.com/feed/49CkbYeyKoa7MyH5R

请注意,外部节点包与Meteor有不同的文档根目录。

var done, files; 

var fs = Npm.require('fs'); 

files = fs.readdirSync("../../../../../server/collections/lib/", function(e, r) {}); 

done = Meteor.bindEnvironment(function(files) { 
    return _.each(files, function(filename) { 
    var myjson; 
    myjson = JSON.parse(Assets.getText("lib/" + filename)); 
    /* do Something */ 

    }); 
}, function(e) { 
    throw e; 
}); 

done(files); 
4

我不知道这是否是最好的办法,但肯定是一个简单的一个:

var fs = Npm.require('fs'); 

fs.readdir('./assets/app/myFolder', function(e, r) { 
    _.each(r, function(filename) { 
     Assets.getText('myFolder/' + filename); 
    }); 
}); 
+0

我该如何将它包裹到流星中。据我了解,我必须包裹来自非流星库的Meteor.bindEnvironment。但我无法得到它的工作。错误消息: 错误:流星代码必须始终在光纤内运行。尝试使用Meteor.bindEnvironment封装您传递给非Meteor库的回调。 – Johannes

+0

将您的代码封装到Meteor.bindEnvironment中。谢谢你的提示! – Johannes