前提・実現したいこと
MySQL+Node.js+Expressの練習として簡単なフォームを作成しております。
複数の名前とメールアドレスがINSERTされたテーブルをMySQLに作成しており、その情報をフォームのドロップダウンリストに反映させたいと思っております。
ただ、すでに同ページに他の情報が入ったテーブルからリストを作成しており、そちらは正常通り反映されています。
発生している問題・エラーメッセージ
ローカルでブラウザに表示しているが、contentが未定義エラーになる。
該当のソースコード
ejs
1 <select input name="input_name"> 2 <span>名前</span> 3 <% for(var j in userdata) {%> 4 <% var usr_obj = userdata[j]; %> 5 <option value="userdata"><%= usr_obj.name %></option> 6 <% } %> 7 </select>
javascript
1 2app.get("/", async (req, res) => { 3 const usr_sql = "select * from user"; 4 let results = await queryAsync(usr_sql); 5 console.log(user_results); 6 res.render("index.ejs",{userdata: user_results}); 7});
参考までに、こちらは期待通り表示されています。
ejs
1<tr> 2 <th scope="col">ID</th> 3 <th scope="col">名前</th> 4 <th scope="col">メールアドレス</th> 5 <th scope="col">表示1</th> 6 <th scope="col">表示2</th> 7 <th scope="col">表示3</th> 8 <th scope="col">表示4</th> 9</tr> 10</thead> 11<tbody> 12 <% for(var i in content) { %> 13 <tr> 14 <% var obj = content[i]; %> 15 <th><%= obj.id %></th> 16 <th><%= obj.name %></th> 17 <th><%= obj.email %></th> 18 <th><%= obj.output1 %></th> 19 <th><%= obj.output2 %></th> 20 <th><%= obj.output3 %></th> 21 <th><%= obj.output4 %></th> 22 </tr> 23 <% } %>
javascript
1app.get("/", async (req, res) => { 2 const sql = "select * from list"; 3 let results = await queryAsync(sql); 4 console.log(result); 5 res.render("index.ejs",{content: result}); 6});
試したこと
リストと同様にすれば表示されると考えたのですが、app.getメソッドを後に書いた方が未定義となってしまいます。
app.getメソッドが2つあるのが悪いと思い、1つのapp.getメソッド内に記述したりしたのですが上手くいきませんでした。
解決策があれば教えて頂けると嬉しいです、よろしくお願い致します。
###追記
javascript
1 2app.get("/", async (req, res) => { 3 const usr_sql = "select * from user"; 4 let user_results = await queryAsync(usr_sql); 5 console.log(user_results); 6 res.render("index.ejs",{userdata: user_results}); 7 8 const sql = "select * from list"; 9 let result = await queryAsync(sql); 10 console.log(result); 11 res.render("index.ejs",{content: result}); 12});
回答2件
あなたの回答
tips
プレビュー