2016-08-02 101 views
0

我试图删除文件的数组,但其中一个或两个的被删除.PLS检查我相信我做错了什么的代码。 我正在寻找在目录中的文件,如果发现我从db..and响应后,首先卸下它,我从目录取消链接的NodeJS文件FS

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++; 
    }); 

调试通过删除文件,我发现文件名和FILEDIR可变越来越下一个文件在阵列中没有等待fs.stat(fileDir, function(err, stats) {完成..有没有其他方法可以做到这一点?检查并删除? 我的文件变量是数组只有文件的名称。

回答

2

fileDir = path.join(__dirname, '/uploads/' + decodeURI(filename));

您在这里缺少一个var声明,因此FILEDIR变量是全局的,所有的回调共享。使用var fileDir = ...将变量作用于您的函数。

+0

感谢兄弟..这是愚蠢的错误.. – Rohit

+0

NP,这是一个很常见的陷阱。 [严格模式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode)可以是有用的,以防止它 – marton