读取动态更新的文件夹中包含的所有 JSON 文件

srb*_*633 5 json node.js

我的目录中包含多个 json 文件,这些文件将由用户动态更新。用户可以添加类别,这将在该目录中创建新的 json 文件,他们还可以删除类别,这将删除该目录中的 json 文件。我正在寻找一种方法来读取该文件夹目录中包含的所有 json 文件,并将所有 json 文件推送到单个对象数组中。我想异步也是可取的。

我对使用 fs 很陌生。我可以使用以下方法按目录读取单个 json 文件

const fs = require('fs');

let data = fs.readFileSync('./sw_lbi/categories/category1.json');
let categories = JSON.parse(data);
console.log(categories);
Run Code Online (Sandbox Code Playgroud)

但当然这只能解决使用时的同步问题require()

由于我不知道目录中将包含哪些 json 文件,因为用户也会命名它们,因此我需要一种方法来通过简单地调用包含它们的文件夹目录来读取所有 json 文件。

我正在想象这样的事情(这显然是愚蠢的)

const fs = require('fs');

let data = fs.readFileSync('./sw_lbi/categories');
let categories = JSON.parse(data);
console.log(categories);
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是什么?

提前致谢。

Dam*_*ewa 16

首先,您需要扫描此目录中的文件,接下来您需要过滤它们并仅选择 JSON,最后读取每个文件并执行您需要执行的操作

const fs = require('fs');
const path = require('path')

const jsonsInDir = fs.readdirSync('./sw_lbi/categories').filter(file => path.extname(file) === '.json');

jsonsInDir.forEach(file => {
  const fileData = fs.readFileSync(path.join('./sw_lbi/categories', file));
  const json = JSON.parse(fileData.toString());
});
Run Code Online (Sandbox Code Playgroud)