2016-10-03 35 views
1

我有一个快速网站,显示在MySQL中的值。它显示新闻,但不显示事件。我确定事件表中有2个值。Nodejs网站不显示第二个mysql表值

这里是路线我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

我认为你误解了表达中间件和路由的概念。您正在注册相同的路径不同的路由器处理程序。类似的东西会做你需要的东西:

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; 
+0

你是对的。我认为我应该学习快速中间件和路线。谢谢您的帮助。 – GoGo

+0

谢谢你的帮助。我有另一个问题。如果我想在同一个表中显示两个不同的值,该怎么办?像[这一个](http://stackoverflow.com/questions/41124989/display-count-value-in-the-mysql-database-table-using-handlebars-in-nodejs-proje) – GoGo