数组返回正确的值,但稍后调用时将所有值返回为“ undefined”

时间:2019-01-08 12:30:21

标签: arrays node.js express

我有一堆JSON文件,我的代码读取这些文件并将其存储到and数组中,当控制台记录该数组时,我获得了正确的值,但渲染页面后,我再次控制台记录了其所有数组值是“未定义”。

let place = [];
let key, count = 0;

function Search(req, res){

  let fileName = getFileName(req, res);
  let emirate = req.body.emirate;
  let type = req.body.type;

  if(emirate == undefined || type == undefined){
    req.flash('error', 'Please fill in the form');
    res.redirect('/')

  }else{
    fs.readFile(`./places_files/${emirate}/${fileName}.json`, function(err, data){
      if(err){
        console.log(err);
      }else{
        let rawData = JSON.parse(data);
        for(key in rawData.places){
          place[count] = rawData.places[count]
          count++;
        }
        console.log(place) // returns all of the values
        res.render('results', {
           places: place
        });
        console.log(place); // returns all values as undefined 
      }
    });
   }
 }

1 个答案:

答案 0 :(得分:1)

您的res.render可以改变您的values数组。 为了防止这种情况,请尝试像以下示例一样发送此数组的副本:

res.render('results', {
   places: place.slice()
});

另一个例子:

res.render('results', {
   places: [...place]
});