nodejs取消链接文件fs

时间:2016-08-02 09:30:20

标签: node.js asynchronous

我正在尝试删除文件数组,但其中一个或两个被删除。请检查代码我确定我做错了什么。 我正在目录中搜索文件,如果发现我是第一个从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变量是仅数组文件的名称。

1 个答案:

答案 0 :(得分:2)

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

您在此处缺少var声明,因此fileDir变量是全局变量并由您的所有回调共享。

使用var fileDir = ...使变量作用于您的函数。