Nodejs - Создание массива объектов из файловой системы. - PullRequest
0 голосов
/ 12 марта 2020

Я работаю над созданием меню в моем ReactApp, которое представляет структуру папок. Папки названы по категориям для документов внутри, некоторые из папок имеют подпапки с файлами там.

Базовый вывод c, который я ищу, выглядит примерно так:

[
 {
  "Payroll Forms": {
      files: ["form1.pdf", "form2.pdf"],
      "Payroll How To's": {
          files: ["file1.pdf", "file2.doc"]
      },
      "Payroll Adjustments": {
          files: ["file1.doc", "file2.pdf"],
          "Payroll Subdirectory": {
              files: ["file1.xsl", "file2.pdf"]
          }
      }
  },
  {
   "LOA": {
      files: []
......(you get the idea)
]

Теперь это целый каталог, поэтому для каждого каталога верхнего уровня будет объект, в котором будут файлы и подкаталоги.

Я могу сделать эту работу с конечным числом подкаталогов, жестко написав, как все работает. Я не хочу ограничивать их тем, что им разрешено делать, или мне нужно go вернуться назад и добавить больше кода для каталогов другого уровня, если им это нужно.

Большую часть двух дней я потратил, разбивая свой мозг на том, как динамически автоматизировать это, и не приблизился ни к чему, поэтому у меня нет стартового кода для работы.

Есть ли Кто-нибудь, кто может протянуть руку, у меня нет проблем, выполняя работу, просто нужно некоторое руководство.

Заранее спасибо!

1 Ответ

0 голосов
/ 12 марта 2020

Эй, попробовал что-то, надеюсь, это поможет:

const fs = require('fs');
//const folderObject = {files:[]}; //if the parent folder has files
const folderObject = {};
function parseFolder(obj, folderPath){
    const files = fs.readdirSync(folderPath);
    for(file of files){
        const filePath = `${folderPath}/${file}`;
        if(fs.lstatSync(filePath).isDirectory()){
            obj[file] = {files:[]};
            parseFolder(obj[file],filePath);
        } else {
            obj.files.push(file);
        }
    }
}
parseFolder(folderObject,'./node_modules');

Измените './node_modules' на путь к папке, который вам нужно проанализировать

...