我有一堆 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
}
});
}
}
你的 res.render 可以改变你的值数组。为了防止这种情况,请尝试发送此数组的副本,如下例所示:
res.render('results', {
places: place.slice()
});
另一个例子:
res.render('results', {
places: [...place]
});
我是一名优秀的程序员,十分优秀!