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));
我需要监视我写入文件的文件夹。添加新文件时,我想知道它是哪个,然后 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));