var std;
......
...... // here I fill std with some data
......
Я пытаюсь получить доступ к «» зОго массива при обращении по этому маршруту:NodeJS сфера выпуск
app.post('/saveABS',function(req,res){
var fileName = "./public/"+f;
fs.writeFile(fileName, JSON.stringify(std, null, 4), function(err) {
if(err) {
console.log(err);
} else {
console.log("The file was saved !");
console.log(a);
for(var i = 0; i < std.length; i++)
{
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'admin' ,
database : 'pfe'
});
console.log('before hr_cours = ' + std[i].hr_cours); // <========= WORKS
Здесь отображается значение станда [я] .hr_cours правильно.
if(std[i].hr_cours != a[i].hr_cours)
{
connection.connect(function(error){
console.log('after hr_cours = ' + std[i].hr_cours); // <============ undefined
Здесь он отображается неопределенный.
if(error)
{
console.log('Unable to connect to database.');
}
else
{
console.log("i= " + i);
console.log("I'm in : hr_cours = " + std[i].hr_cours);
connection.query("INSERT INTO assiste VALUES (CURDATE(),(SELECT id_etud FROM Etudiant WHERE nom_etud = ?),(SELECT s.id_seanceFROM Seance s, aura_lieu a, jour j, fait_objet fWHERE s.id_seance = a.id_seanceAND CURTIME() BETWEEN a.heure_debut AND a.heure_fin AND a.id_jour = j.id_jour AND j.dat = CURDATE() AND f.id_seance = s.id_seance AND f.id_ens = ?), ?)", [std[i].nom_etud, idEns, std[i].hr_cours], function(er1, res1){
if(er1)
{
console.log('Query error: ');
}
else
{
console.log('success');
}
});
}
});
}
}
res.end("all");
}
});
});
Я заметил, что вопрос срабатывает после того, как поток выполнения переходит в блок connection.connect и что это вопрос сферы; Я искал всюду для ответа, но не смог найти решение моей конкретной проблемы. Как я могу сделать эту работу?
Вы можете подумать о запуске узла с помощью '-harmony' и использовать« let »вместо« var »: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let – FoggyDay
I сделал ... но такой же старая ошибка –
возможный дубликат [JavaScript закрытия внутри петель - простой практический пример] (http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) –