在Meteor上异步读取文件

时间:2014-11-27 02:37:41

标签: asynchronous meteor

我对Meteor很陌生,所以如果这是一个愚蠢的问题我道歉:

如何从服务器端的文件系统中读取文件,并在客户端显示这些内容。同步地做它不是一个问题,因为我可以马上把它归还,但正如我从阅读中理解的那样,它击败了Meteor的目的,所以我试图异步地做它。但是,我不知道如何以这种方式连接客户端/服务器。发布/订阅似乎只适用于数据库集合而不适用于文件系统文件。我非常感谢您给我的任何指导。

if (Meteor.isClient) {
Template.body.helpers({
            myfile: function(){
                    return file_contents;
            }
    });
}


if (Meteor.isServer) {
     Meteor.methods({
     myfile: function(){
                    var fs = Npm.require("fs");
                    fs.readFile('/opt/SI/SIAgent/conf/myfile','utf-8', function (err, data) {
                    file_contents =  data;
                    });

             }   
     });

}

1 个答案:

答案 0 :(得分:1)

您必须使用Meteor.wrapAsync将Node.JS fs.readFile转换为同步代码,以便您可以在Meteor方法中返回结果。

var fs=Npm.require("fs");
fsReadFileSync=Meteor.wrapAsync(fs.readFile,fs);

Meteor.methods({
  getMyFileContent:function(){
    return fsReadFileSync("/opt/SI/SIAgent/conf/myfile","utf-8");
  }
});