我将Node.js用于后端。我想检查目录是否为空,然后将任何响应发送给客户端,例如res.json('it is empty')
或res.sendStatus(404)
,否则执行某些操作...因为在我的客户端(Reactjs),我的应用程序一直在等待响应几分钟。
如果文件夹不为空且正常工作,Node.js会以JSON响应,但不会为空文件夹做出响应。
Nodejs:
var dirTree = ('./data/');
var diretoryTreeToObj = function(dir, done, res) {
var results = [];
fs.readdir(dir, function(err, list, res) {
if (err)
return done(err);
var pending = list.length;
if (!pending && pending !== 0)
return done(null, {
name: path.basename(dir),
type: 'folder',
children: results
});
list.forEach(function(file) {
file = path.resolve(dir, file);
fs.stat(file, function(err, stat) {
if (stat && stat.isDirectory()) {
let data2 = __dirname + dir + '/' + path.basename(file)
let dirName = data2.split('\\').pop().split('/data/').pop()
results.push({
name: dirName,
type: 'folder',
});
if (!--pending)
done(null, results);
} else {
let data3 = __dirname + dir + '/' + path.basename(file)
let contentName = data3.split('\\').pop().split('/data/').pop()
results.push({
name: contentName,
type: 'file'
});
if (!--pending)
done(null, results);
}
});
});
});
};
app.get('/source/:fileid(*)', (req, res) => {
const {
fileid
} = req.params;
var allFiles = __dirname + /data/ + fileid
diretoryTreeToObj(allFiles, (err, getDirs) => {
if (err) {
res.sendStatus(404);
} else {
res.json(getDirs);
}
})
})
答案 0 :(得分:0)
if条件应为:
if (!pending){
return done(null, {
name: path.basename(dir),
type: 'folder',
children: results
});
}
检查以下内容: how to determine whether the directory is empty directory with nodejs