Node.JS为fs.readdir数组中的每个项运行函数

时间:2017-11-14 15:55:31

标签: javascript node.js fs

我有一个fs.readdir()函数,我想每隔几个小时运行一次。这样做的原因是每隔一段时间就会将一堆文件发送到我的盒子,我必须为每个文件运行一个脚本,将它们上传到db。

fs.readdir('some/location/',(err,files) => {
    if (files.indexOf('someFile') > -1) {
        console.log('file found')
        function1()
    }else{
        Console.log('file not found')
})

现在我不想为所有被删除的13个文件执行readdir有没有办法创建像

这样的列表
someFile = function1()
someFile2 = function2()

那么它为readdir数组中的每个文件运行每个文件专用函数?

var function1 = function........

var function2 = function... do.somethng.diferent

1 个答案:

答案 0 :(得分:1)

你可以:

  1. 创建一个名为{}的对象fileFunctions,将每个文件名映射到要应用的函数。
  2. 如果此文件名与fileFunctions中的条目匹配,则迭代目录的文件并使用您刚刚构建的对象应用与此文件名匹配的函数:

  3. fileFunctions = {
      'file1' => function() {/*function to apply to file1*/},
      'file2' => function() {/*function to apply to file2*/},
       //etc..
    };
    fs.readdir('some/location/',(err,files) => {
        files.map((file) => {
           if(file in fileFunctions) {
                fileFunctions[file1](file1);
           }
         });
    });