2013-10-14 12 views
5

Trong thiên thạch tôi có thể đọc một tập tin như thế này:lặp qua thư mục với Assets.getText

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

Bây giờ tôi muốn lặp thông qua một thư mục, và đọc tất cả các file json sẵn. Điều gì sẽ là cách tốt nhất để làm điều này mà không cần cài đặt thêm gói NPM. Cảm ơn bạn đã dành thời gian.

Trả lời

2

tôi quấn Hubert đang OGS vào một chức năng với Meteor.bindEnvironment. Tôi tin rằng điều này là cần thiết vì chất xơ không có sẵn bên ngoài môi trường Meteor. xem https://www.eventedmind.com/feed/49CkbYeyKoa7MyH5R

Hãy coi chừng các gói Node ngoài có gốc tài liệu khác với 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

Tôi không chắc chắn nếu điều này là cách tốt nhất, nhưng chắc chắn một điều dễ dàng là:

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

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

Tôi có thể bọc nó vào thiên thạch như thế nào. Theo tôi hiểu, tôi phải kết nối với Meteor.bindEnvironment từ các thư viện không sao băng. Nhưng tôi không thể làm cho nó hoạt động được. Thông báo lỗi: Lỗi: Mã Meteor phải luôn chạy trong một Fiber. Hãy thử gói các callback mà bạn chuyển tới các thư viện không phải Meteor bằng Meteor.bindEnvironment. – Johannes

+0

gói mã của bạn vào Meteor.bindEnvironment. Cảm ơn bạn đã gợi ý! – Johannes

Các vấn đề liên quan