2016-08-02 13 views
0

ファイルの配列を削除しようとしていますが、そのうちの1つまたは2つが削除されます.Plsコードをチェックして、間違っていると確信しています。 私は、ディレクトリ内のファイルを探していますし、見つかった場合、私は最初に私がデバッグを通じてディレクトリ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++; 
    }); 

からファイルを削除しています応答の後db..andからそれを削除しています私は、そのファイル名とFILEDIR変数は次のファイルを取得しているました配列内のfs.stat(fileDir, function(err, stats) {を完了するのを待つことなく..私はそれを行うことができます他の方法はありますか?チェックして削除しますか? my files変数は、配列のみのファイルの名前です。

答えて

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

関連する問題