我正在尝试删除文件数组,但其中一个或两个被删除。请检查代码我确定我做错了什么。 我正在目录中搜索文件,如果发现我是第一个从db中删除它,并在响应后我从目录中删除文件
if (files.length > 0) {
files.forEach(function(filename) {
fileDir = path.join(__dirname, '/uploads/' + decodeURI(filename));
fs.stat(fileDir, function(err, stats) {
if (stats.isFile()) {
// fs.unlink(fileDir, function(err) {
form_op.deleteImg(url.resolve('http://localhost/uploads/', filename), query._id, function(err, result) {
if (err) {
throw console.log(err)
}
fs.unlink(fileDir);
});
// });
}
});
done++;
});
通过调试我发现filename和fileDir变量正在获取数组中的下一个文件而不等待fs.stat(fileDir, function(err, stats) {
完成..有没有其他方法可以做到这一点?检查并删除?
我的files变量是仅数组文件的名称。
答案 0 :(得分:2)
fileDir = path.join(__dirname, '/uploads/' + decodeURI(filename));
您在此处缺少var
声明,因此fileDir变量是全局变量并由您的所有回调共享。
使用var fileDir = ...
使变量作用于您的函数。