我需要將目錄中的文件列表傳遞給Meteor中的客戶端。如何在服務器上使用npm時使方法處於活動狀態
到目前爲止,我有這樣的:
if (Meteor.isClient) {
Meteor.call('getFiles', function(error, result) {
if (error) {
throwError(error.reason);
} else {
console.log(result);
}
});
}
if (Meteor.isServer) {
Meteor.methods({
'getFiles': function getFiles() {
var walk = Meteor.npmRequire('walk');
var files = new Array();
var walker = walk.walk('/test', { followLinks: false });
walker.on('file', function(root, stat, next) {
files.push(root + '/' + stat.name);
next();
});
walker.on('end', function() {
console.log(files);
});
return files;
}
});
}
我可以看到服務器控制檯上的文件列表,但客戶端的控制檯返回一個空數組。我猜這是因爲在完成walker之前調用該方法,並簡單地返回在該方法中創建的空數組。
我的問題是,如何讓我這個反應?我希望每次在目錄中添加或刪除文件時都運行此方法。