2013-10-14 41 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