Массив возвращает правильные значения, но при вызове позже возвращает все значения как «неопределенные» - PullRequest
0 голосов
/ 08 января 2019

У меня есть куча JSON-файлов, и мой код читает файлы и сохраняет их в массиве. Когда консоль регистрирует массив, я получаю правильные значения и после рендеринга страницы, я снова записываю в консоль массив все его значения были «неопределенными».

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 голосов
/ 08 января 2019

Ваш res.render может изменить ваш массив значений. Чтобы предотвратить это, попробуйте отправить копию этого массива, как в следующем примере:

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

Другой пример:

res.render('results', {
   places: [...place]
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...