

この前から色々検索しながらnode.jsとjavascriptを使用してサイトを作ろうとしています。  
複数のクエリの結果をejsに送るというコードを書こうとしているのですが、エラーになってしまいます。  
res.renderの前でresults[0].length、results[1].length、results[2].lengthをすると正しいサイズが表示されるので、多分取得は出来ていると思います。  
<https://stackoverflow.com/questions/42974598/unexpected-token-return-in-
while-compiling-ejs>  
<https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Errors/Malformed_formal_parameter>  
上記の質問などがヒットしましたが、includeは使っていません。  
ejs-lintも使用してみました。

[code]

    /home/ubuntu/views/results.ejs
      1:1  error  Parsing error: Unexpected token <
    
    ✖ 1 problem (1 error, 0 warnings)
    
[/code]

しかし、1行目の1文字目の<はhtmlタグなので、そこでエラーが出るとは考えにくいです。  
初歩的な質問で申し訳ございません。皆様の知恵をお借りしたいです。  
よろしくお願い致します。

[code]

    //server.js
    const express = require('express');
    const app = express();
    const bodyParser = require('body-parser');
    app.use(bodyParser.urlencoded({ extended: true }));
    
    let http = require('http');
    let fs = require('fs');
    let mysql = require('mysql');
    
    const connection = mysql.createConnection({
      multipleStatements:true,
      host: 'localhost',
      user: 'ユーザー名',
      password: 'パスワード',
      database: 'データベース名'
    });
    
    connection.connect(function(err) {
      if (err) throw err;
      console.log('Connected');
    });
    
    app.use(express.static('public'));
    app.get('/', (req, res) => {
      res.render('index.ejs');
      
    });
    
    app.post("/result", (req, res) => {
      let selected = req.body.selected_series;
      let series;
      let human_series, item_series, quotation_series;
      //クエリを変数に入れる
      if(selected === "one"){
        series = "SELECT * FROM human where series = " + 1 + "; SELECT * FROM item WHERE series = " + 1 + ";"; 
      }else if(selected === "two"){
        series = "SELECT * FROM human where series = " + 2 + "; SELECT * FROM item WHERE series = " + 2 + "; SELECT * FROM quotation WHERE series" + ";";
        
      }else if(selected === "nt"){
        series = "SELECT * FROM human where series = " + 3 + "; SELECT * FROM item WHERE series = " + 3 + "; SELECT * FROM  quotation series = " + 3 + ";";
      }else{
        human_series = Math.floor( Math.random() * 4 );
        item_series = Math.floor( Math.random() * 4 );
        quotation_series = Math.floor( Math.random() * 4 );
        series = "SELECT * FROM human where series = " + human_series + "; SELECT * from item where series = " + item_series + "; SELECT * from quotation where series = " + quotation_series +";";
      }
      connection.query(
        series,
          (error, results) => {
          res.render('results.ejs', {humans: results[0], items:results[1], quotations: results[2]});
          } 
        );
      });
    
    
    app.listen(3000, () => {
      console.log("My app listening on port 3000!");
    });
    
[/code]

表示するためのreults.ejs

[code]

    <html>
      <head>
        <title>結果</title>
      </head>
      <body>
        <% Object.values(humans); %>
        <% Object.values(items); %>
        <% Object.values(quotations); %>
        <p>-----登場人物-----</p>
        <% humans.forEach(human) => { %>
          <%= human %>
        <% } %>
        <p>-----アイテム-----</p>
        <% items.forEach(item) => { %>
          <%= item %>
        <% } %>
        <p>-----一言-----</p>
        <% quotations.forEach(quotation) => { %>
          <%= quotation %>
        <% } %>
        <a href="/">もう一度占う</a>
      </body>
    </html>
    
[/code]

エラー内容

[code]

    SyntaxError: Malformed arrow function parameter list in /home/ubuntu/views/results.ejs while compiling ejs
    
    If the above error is not helpful, you may want to try EJS-Lint:
    https://github.com/RyanZim/EJS-Lint
    Or, if you meant to create an async function, pass `async: true` as an option.
        at new Function (<anonymous>)
        at Template.compile (/home/ubuntu/node_modules/ejs/lib/ejs.js:662:12)
        at Object.compile (/home/ubuntu/node_modules/ejs/lib/ejs.js:396:16)
        at handleCache (/home/ubuntu/node_modules/ejs/lib/ejs.js:233:18)
        at tryHandleCache (/home/ubuntu/node_modules/ejs/lib/ejs.js:272:16)
        at View.exports.renderFile [as engine] (/home/ubuntu/node_modules/ejs/lib/ejs.js:489:10)
        at View.render (/home/ubuntu/node_modules/express/lib/view.js:135:8)
        at tryRender (/home/ubuntu/node_modules/express/lib/application.js:640:10)
        at Function.render (/home/ubuntu/node_modules/express/lib/application.js:592:3)
        at ServerResponse.render (/home/ubuntu/node_modules/express/lib/response.js:1012:7)
    
[/code]

追記  
server.jsに値を渡しているので一応index.ejsも貼ります。

[code]

    <html>
      <head>
        <meta charset="utf8">
        <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
        <script type="text/javascript" src="siren.js"></script>
        <link rel="stylesheet" href="style.css" type="text/css">
        <title>たいとる</title>
      </head>
      <body>
        <p>シリーズを選択してください</p>
        <form action="/result" method="POST">
          <select id="select_series" name="selected_series">
            <option value="none" name="series">--選択してください--</option>
            <option value="one" name="series">SIREN</option>
            <option value="two" name="series">SIREN2</option>
            <option value="nt" name="series">SIREN:NT</option>
            <option value="all" name="series">全シリーズ</option>
          </select>
          <button type="submit" id="select">決定</button>
        </form>
        <div id="result"></div>
      </body>
    </html>
    
[/code]


CC BY-SA 4.0
2021-06-21T02:31:00.640
77670
2022-09-07T09:07:05.660
2021-06-21T02:36:15.673
46953
46953
question
mysql node.js
node.jsとmysqlで複数のqueryを実行したい


ありがとうございます。  
forEachの書き方が違うという初歩的なミスでした。

[code]

    <html>
      <head>
        <title>結果</title>
      </head>
      <body>
        <% Object.values(humans); %>
        <% Object.values(items); %>
        <% Object.values(quotations); %>
        <p>-----登場人物-----</p>
        <% humans.forEach(human => { %>
          <%= human %>
        <% }); %>
        <p>-----アイテム-----</p>
        <% items.forEach(item => { %>
          <%= item %>
        <% }); %>
        <p>-----一言-----</p>
        <% quotations.forEach(quotation => { %>
          <%= quotation %>
        <% }); %>
        <a href="/">もう一度占う</a>
      </body>
    </html>
    
[/code]


CC BY-SA 4.0
2021-06-21T02:48:15.150
77671
2021-06-21T02:48:15.150
46953
77670
answer