Node.jsでクエリ実行した結果の配列をターミナルに表示させたい。
Node.jsからクエリ実行すると、ターミナルに「undefined」が表示されます。
発生している問題・エラーメッセージ
undefined
app.js
js
1 2//パッケージ読み込み 3const express = require('express'); 4const app = express(); 5 6const mysql = require('mysql'); 7 8// CSSや画像ファイルを置くフォルダを指定 9app.use(express.static('public')); 10 11// mysqlの接続情報 12const connection = mysql.createConnection({ 13 host: 'localhost', 14 user: 'roof', 15 password: '*****', 16 database: 'list_app' 17}); 18 19//HTTPリクエストを受け取る部分 20app.get('/index', (req, res) => { 21 connection.query('SELECT * FROM users', 22 (error,results) => { 23 console.log(results); 24 res.render('index.ejs'); 25 }); 26}); 27 28 29// サーバーを起動するコード 30app.listen(3000); 31
mysql
1mysql> show databases; 2+--------------------+ 3| Database | 4+--------------------+ 5| information_schema | 6| list_app | 7| mysql | 8| performance_schema | 9| sys | 10+--------------------+ 115 rows in set (0.00 sec) 12 13mysql> use list_app; 14Reading table information for completion of table and column names 15You can turn off this feature to get a quicker startup with -A 16 17Database changed 18mysql> show tables; 19+--------------------+ 20| Tables_in_list_app | 21+--------------------+ 22| users | 23+--------------------+ 241 row in set (0.00 sec) 25 26mysql> show columns from users; 27+-------+---------+------+-----+---------+----------------+ 28| Field | Type | Null | Key | Default | Extra | 29+-------+---------+------+-----+---------+----------------+ 30| id | int(11) | NO | PRI | NULL | auto_increment | 31| name | text | YES | | NULL | | 32+-------+---------+------+-----+---------+----------------+ 332 rows in set (0.00 sec) 34 35mysql> select * from users; 36+----+-----------------+ 37| id | name | 38+----+-----------------+ 39| 1 | じゃがいも | 40| 2 | じゃがい | 41| 3 | じゃが | 42+----+-----------------+ 433 rows in set (0.00 sec) 44 45mysql> 46
##試したこと
このように⇩jsファイルからejsファイルに値を渡してみました。
js
1app.get('/index', (req, res) => { 2 connection.query( 3 'SELECT * FROM users', 4 (error, results) => { 5 res.render('index.ejs',{users:results}); 6 } 7 ); 8});
ejs
1<ul class="main-input"> 2 <% users.forEach((item) => { %> 3 <li> 4 <div class="item-data"> 5 <span class="id"><%= item.id %></span> 6 <span class="textarea"><%= item.name %></span> 7 </div> 8 </li> 9 <% }); %> 10</ul>
そうすると、ターミナルに下記のエラーが表示されます。
TypeError: /Users/tanimurashun/Desktop/list-app/views/index.ejs:29 27| <!--ここまで=============--> 28| <ul class="main-input"> >> 29| <% users.forEach((item) => { %> 30| <li> 31| <div class="item-data"> 32| <span class="id"><%= item.id %></span> Cannot read property 'forEach' of undefined
どなたかご教授くれる方はいないでしょうか?すぐ返信致します。また解決ができ次第、私からも回答致します。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/20 13:35