我有一堆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
}
});
}
}
答案 0 :(得分:1)
您的res.render可以改变您的values数组。 为了防止这种情况,请尝试像以下示例一样发送此数组的副本:
res.render('results', {
places: place.slice()
});
另一个例子:
res.render('results', {
places: [...place]
});