Nodejs网站不显示第二个mysql表值

时间:2016-10-03 21:28:05

标签: javascript mysql node.js express

我有一个快速网站,在mysql中显示值。它显示新闻但不显示事件。我确信事件表中有2个值。

这是路由中的index.js文件:

var express = require('express');
var router = express.Router();
var mysql = require('mysql');

//connection variables
var connection = mysql.createConnection({
host: 'localhost',
port: '3306',
user: 'root',
password: 'mypassword*',
database: 'icomnodejs'

});

 connection.connect();

 router.get('/', function (req, res, next) {

 connection.query('SELECT * FROM news', function (err, rows, fields) {
    if (err) throw err;
    res.render('index', {
        'news' : rows
        });
   });
});

 router.get('/', function (req, res, next) {
  connection.query('SELECT * FROM events', function (err, rows, fields) {
    if (err) throw err;
    res.render('index', {
        'events': rows
          });
      });
  });

 module.exports = router;

这是我的名为index.handlebars的视图文件

 <div class="row">
    {{#if news}}
        {{#each news}}

            <div class="col-md-4 img-portfolio">
                <a href="portfolio-item.html">
                    <img class="img-responsive img-hover" src="http://placehold.it/700x400" alt="">
                </a>
                <h3>
                    <a href="portfolio-item.html">{{title}}</a>
                </h3>
                <p>{{text}}</p>
            </div>
            {{/each}}
         </div>

{{else}}
<p>No News</p>
{{/if}}

    <hr>

    <!-- Marketing Icons Section -->
    <div class="row">
        <div class="col-lg-12">
            <h1 class="page-header">
                Upcoming Events Lopping As well
            </h1>
        </div>

        {{#if events}}
            {{#each events}}
                <div class="col-md-4">
                    <div class="panel panel-default">
                        <div class="panel-heading">
                            <h4><i class="fa fa-fw fa-check"></i> {{title}}</h4>
                        </div>
                        <div class="panel-body">
                            <p>{{text}}</p>
                            <a href="#" class="btn btn-default">Learn More</a>
                        </div>
                    </div>
                </div>
        {{/each}}
        {{else}}
        <p>No events</p>
        {{/if}}

    </div>

根据视图文件,我看到数据库中的新闻,但我看不到事件。我只是没有看到问题出在哪里。

1 个答案:

答案 0 :(得分:1)

我认为您误解了快速中间件和路由的概念。您正在注册相同的路径不同的路由器处理程序。这样的事情会做你需要的:

var express = require('express');
var router = express.Router();
var mysql = require('mysql');

//connection variables
var connection = mysql.createConnection({
  host: 'localhost',
  port: '3306',
  user: 'root',
  password: 'mypassword*',
  database: 'icomnodejs'

});

connection.connect();

function getNews(req, res, next) {
  connection.query('SELECT * FROM news', function (err, rows, fields) {
    if (err) {
      return next(err);
    };

    req._news = rows;
    return next();
  });
}

function getEvents(req, res, next) {
  connection.query('SELECT * FROM events', function (err, rows, fields) {
    if (err) {
      return next(err);
    };

    req._events = rows;
    return next();
  });
}

router.get('/', getNews, getEvents, function (req, res, next) {
  res.render('index', {
    'news': req._news,
    'events': req._events
  });
});

module.exports = router;