前提・実現したいこと
Node.jsとMySQLを接続してデータベースを取得したいのですがどうやっても未定義となってしまいます。
初心者なのでツッコミどころあると思いますがご教示いただけると幸いです。
Node.js
23| <ul class="table-body"> 24| >> 25| <% lists.forEach((list) => { %> 26| <li> 27| <div class="list-data"> 28| <span class="list-name"><%= lists.id %></span> lists is not defined
該当のソースコード
javascript
1const express = require('express'); 2const mysql = require('mysql'); 3const app = express(); 4 5app.use(express.static('public')); 6 7const connection = mysql.createConnection({ 8 host: 'localhost', 9 user: 'root', 10 password: 'password', 11 database: 'database' 12}); 13 14app.get('/', (req, res) => { 15 connection.query('SELECT * FROM lists', 16 (error, results) => { 17 console.log(results); 18 res.render('home.ejs', {lists: results}); 19 } 20 ); 21}); 22 23app.listen(3000);
html
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="utf-8"> 5 <title>LIST</title> 6 <link rel="stylesheet" href="/css/style.css"> 7 </head> 8 <body> 9 <div class = 'home-wrapper'> 10 <div class = 'home-top'> 11 <div class = 'home-title'> 12 <h1 class = 'title'>MY LIST</h1> 13 </div> 14 <div class = 'home-list'> 15 <li>1</li> 16 <li>2</li> 17 <li>3</li> 18 </div> 19 </div> 20 21 <div class = 'home-main'> 22 23 <% lists.forEach((list) => { %> 24 <li> 25 <div class="list-data"> 26 <span class="list-name"><%= list.id %></span> 27 </div> 28 </li> 29 <% }) %> 30 31 </div> 32 </div> 33 </body> 34 </html>
試したこと
誤字の可能性を考え探しましたが見当たりませんでした。
補足情報(FW/ツールのバージョンなど)
console.log(results); でどんな結果が表示されますか?
たぶん、home.ejs の <%= lists.id %> のところは、lists.id じゃなくて list.id では。
ありがとうございます。
>たぶん、home.ejs の <%= lists.id %> のところは、lists.id じゃなくて list.id では
その通りでした。修正します。ありがとうございます。
>console.log(results); でどんな結果が表示されますか?
home.ejsの
<% lists.forEach((list) => { %>
<li>
<div class="list-data">
<span class="list-name"><%= lists.id %></span>
</div>
</li>
<% }) %>
の部分を消すとエラーは発生せず undefined と表示されます。
しかし上記の文があるとやはりエラーが発生してしまいます。
原因で考えられるようなことがあればご教授宜しくお願いいたします。
results が undefined ということは SELECT 文が失敗してるってことですよね。
console.log(error); とかしたら原因が分かるかも。
結論からになりますがMySQLにログインを忘れていたという本当に初歩的なミスが原因で、解決しました。
昨日はログインしていたのでどこかにエラーがあったのですがお二方にご指摘いただいたところに原因がありログインしたら解決していたという感じです。
本当にありがとうございました。
回答1件
あなたの回答
tips
プレビュー