【问题标题】:Retrieving all the content of a MySQL query to Jade template engine through NodeJS and Express通过 NodeJS 和 Express 将 MySQL 查询的所有内容检索到 Jade 模板引擎
【发布时间】:2011-10-18 09:40:57
【问题描述】:

简单的新手问题,我是从 nodejs 开始的,而且我对后端语言很陌生。

我设法使用 express-js 中的默认玉引擎将单个字段从数据库发布到网页。

/**
 * Module dependencies.
 */

var express = require('express');

var app = module.exports = express.createServer();
var sqlResult;
//MySql
var mysqlClient = require('mysql').Client,
    newClient = new mysqlClient(),
    Database = 'test',
    Table = 'test_table';

    newClient.user ='root';
    newClient.password='password';
    newClient.connect(console.log('connected to the database.'));
    newClient.query('USE '+Database);
    newClient.query(
  'SELECT * FROM '+Table,
  function selectCb(err, results, fields) {
    if (err) {
      throw err;
    }
    sqlResult = results[0];
    console.log(sqlResult['text'], sqlResult['title']);
  }
);
// Configuration

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser());
  app.use(express.session({ secret: 'your secret here' }));
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
});

app.configure('production', function(){
  app.use(express.errorHandler()); 
});

// Routes

app.get('/', function(req, res){
  res.render('index', {
    title: sqlResult['title']
  });
});

app.listen(3000);
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);

我的问题是,如何显示由 MySQL Query 检索到的所有元素的列表?

谢谢你:)

【问题讨论】:

    标签: mysql node.js express


    【解决方案1】:

    将完整结果传递给 Jade

    app.get('/', function(req, res){
      newClient.query('USE '+Database);
      newClient.query('SELECT * FROM '+Table, function selectCb(err, results, fields) {
        if (err) {
          throw err;
        }
        res.render('index', {
          title: results[0].title,
          results: results
        });
      }
    });
    

    然后在你的 Jade 中遍历它们

    - for( var i = 0, len = results.length; i < len; i++ ) {
      .result
        .field1= results[i].field1
        .field2= results[i].field2
    - }
    

    【讨论】:

    • 这段代码并不完全有效,但让我走上了正确的道路!
    【解决方案2】:

    更好

    ul
      - each result in results
      li= result.text
    

    【讨论】:

      【解决方案3】:

      感谢generalhenry,我找到了办法。

      基本上我不需要在服务端js中的mysql get函数或者查询函数中添加其他东西。

      这都是关于玉引擎的,这段代码有效:将您从 get 函数(在本例中为结果)传递的变量作为输入,并遍历它,选择我想要的字段。

      h1 Hello there!
      p Welcome to this try
      - for( var i = 0; i < results.length; i++ ) {
      - var textbody = results[i]
          p= textbody['text']
      - }
      

      希望将来可以帮助其他人:)

      【讨论】:

        【解决方案4】:

        像这样。结果是一个数组,所以你必须循环它

            for (var i in results){
                 var sqlResult = results[i];
                 console.log(sqlResult['text'], sqlResult['title']);
            }
        

        【讨论】:

        • 在控制台中工作,但问题是我仍然无法将这个数组带到前端/Jade 引擎。
        猜你喜欢
        • 1970-01-01
        • 2015-12-16
        • 2012-01-16
        • 2014-12-13
        • 2013-07-22
        • 1970-01-01
        • 2011-07-01
        • 1970-01-01
        • 2015-04-22
        相关资源
        最近更新 更多