Nodejs fs.watch / fs.readFile - return 添加文件

Nodejs fs.watch / fs.readFile - return added file

我需要监视我写入文件的文件夹。添加新文件时,我想知道它是哪个,然后 return 它在我应用程序的其他地方 我试过使用 fs.watch() 和 chokidar 并且它有效。我的问题是,我似乎无法 return 添加的文件,它总是以 'undefined' 的形式出现。 我试图找到一种方法 'data' 到外面然后 return 它在那里,但我不能

const readFromFile = () => {
  console.log("waiting for new message...")
  fs.watch('./db', (eventType, filename) => {
    if (filename) {
      fs.readFile(`./db/${filename}`, 'utf-8', (err, data) => {
        if (err) throw err;
        //console.log(data); <-- prints new file added
        return data;  <-- returns undefined
      });
    }});
} 

我需要从应用程序的另一部分访问添加的文件,以便我可以进一步处理它。

const file = readFromFile();
console.log(file); <-- undefined

有人可以建议我需要做什么重构吗?

您可以提供一个在读取文件时调用的回调函数:

const readFromFile = (cb) => {
  fs.watch('./db', (eventType, filename) => {
    if (filename) {
      fs.readFile(`./db/${filename}`, 'utf-8', (err, data) => {
        if (err) throw err;
        cb(data); 
      });
    }});
} 

然后像这样使用它:

readFromFile((data) => console.log(data));