履修登録システムを作る課題をしております。
mongooseにある生徒情報をfind()を使って全て取り出しpushでグローバル変数に入れたいのですが、
実行後、そのグローバル変数の中身が[]と表示されます。
ローカル変数にpushした場合は上手くいくのですが、なぜグローバル変数にはpushされないのかがわからないため、
こちらで質問させていただきました。
var data = []; Students.find() .exec() .then((students)=>{ for(const student of students){ data.push({ number: student.number, firstName: student.firstName, lastName: student.lastName, id: student._id }) } }) console.log(data); // []
説明不足や至らない点があるかと思いますが、ご教示いただけると幸いです。
追記
forループの直前にconsol.log(students)を置くと、中身がきちんと表示されているので、この時点でデータは取り出しができているのがわかります。それと以下のようにグローバル関数ではなくローカル関数にして置き換えてみるときちんとデータがpushされます。
Students.find() .exec() .then((students)=>{ var data = []; for(const student of students){ data.push({ number: student.number, firstName: student.firstName, lastName: student.lastName, id: student._id }) } console.log(data); // データが表示される })
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/29 17:34