无法访问功能范围之外的数据

时间:2017-09-23 11:11:08

标签: javascript node.js express scope

我有一个函数可以将用户输入(当前名为app.json)从浏览器(客户端)下载到服务器

  function downloadUpdate(callback) {
  //Using formidable node package for downloading user input to server
  var form = new formidable.IncomingForm();
  form.on('fileBegin', function(name, file) {
    file.path = "app.json";
  });

  form.parse(req, function(err, fields, files) {
    res.writeHead(200, {
      'content-type': 'text/plain'
    });
    res.write('received upload:\n\n');
    res.end(util.inspect({
      fields: fields,
      files: files
    }));
  });

  form.on('end', function() {
    callback(null);
  });
} 

我有另一个函数,它接受上面下载的文件并将其转换为所需的格式(final.json)。

function UpdateCode(callback) {
    var obj = fs.readFileSync('app.json', 'utf8');
    console.log(abc); //Im getting undefined here
      var object = JSON.parse(obj);
      var data2 = [];
      for (var j = 0; j < object.length; j++) {
        if (object[j].value == `${abc}`) {
          data2.push(object[j]);
        }
      }
      console.log(data2);
      fs.appendFile('final.json', JSON.stringify(data2), function(err) {
        if (err) throw err;
        console.log('Saved!');
        callback(null);
      });
    }

我使用异步系列函数使它们按照这样的顺序运行

async.series([
  downloadUpload,
  UpdateCode
], function(err, result) {
  if (err) throw err;
  else {
    console.log(result);
  }
});

所有这些代码都在一个帖子请求中。我从服务器获得abc

app.post('/', function(req,res){
       var abc = req.body.abc;
       console.log(abc); //I'm getting abc here
     function downloadfile(callback){
//here goes the downloadfile definition
}
function UpdateCode(){
//upload code function
}
//now i call async.series method
 async.series([
      downloadUpload,
      UpdateCode
    ], function(err, result) {
      if (err) throw err;
      else {
        console.log(result);
      }
    });
});

事情是abc的值不会起作用的上传代码,当我控制日志abc时,我得到了未定义。我哪里错了?

0 个答案:

没有答案