Проблема с MySQL SUM в проекте Node.js Express с EJS - PullRequest
1 голос
/ 09 мая 2019

В настоящее время я пытаюсь создать панель управления для моего проекта Node.js.Чтобы получить обзор определенных значений, их следует суммировать.Мой SELECT отлично работает в моей базе данных MySQL, но если я включу его в свой проект Node, я не получу никакого вывода.

app.get('/dash', function(req, res, next) {
    connection.query("SELECT SUM(g_speicherplatz), SUM(g_spielzeit), SUM(g_kosten) FROM games", function(error, result, fields) {
        if(error) {
            req.flash('error', error)
            res.render('games/g-dash', {
                data: ''
            })
        } else {
            res.render('games/g-dash', {
                data: result,
            })
        }
    })
})

EJS Вывод:

<div class="container">
    <div class="row">
        <% if (data) { 
            console.log("Anzahl Datensätze: " + data.length);
            data.forEach(function(dash){ %>
            <div class="card mb-3">
               <h3 class="card-header">Statistiken</h3>
               <h3><%= dash.g_speicherplatz %></h3>
               <h3><%= dash.g_spielzeit %></h3>
               <h3><%= dash.g_kosten %></h3>
            </div>
        <% }) %>
        <% } %>
    </div>
</div>

Где моя ошибка?

Ответы [ 2 ]

2 голосов
/ 09 мая 2019

Вам необходимо назначить псевдонимы сумм.

    connection.query("SELECT SUM(g_speicherplatz) AS g_speicherplatz, SUM(g_spielzeit) AS g_spielzeit, SUM(g_kosten) AS g_kosten FROM games", function(error, result, fields) {

1 голос
/ 09 мая 2019

Попробуйте добавить псевдонимы к вашему запросу, а затем обратитесь к ним в вашем представлении:

SELECT
    SUM(g_speicherplatz) AS g_speicherplatz_sum,
    SUM(g_spielzeit) AS g_spielzeit_sum,
    SUM(g_kosten) QS g_kosten_sum
FROM games;

И в представлении:

<div class="card mb-3">
    <h3 class="card-header">Statistiken</h3>
    <h3><%= dash.g_speicherplatz_sum %></h3>
    <h3><%= dash.g_spielzeit_sum %></h3>
    <h3><%= dash.g_kosten_sum %></h3>
</div>
...