2011-08-02 6 views
6

初心者初心者の質問、私はnodejsから始めて、私は一般的にバックエンドの言語にはかなり新しいです。NodeJSとExpressを介してJadeテンプレートエンジンにMySQLクエリのすべてのコンテンツを取得

express-jsのデフォルトのjadeエンジンを使用して、データベースからWebページに1つのフィールドを公開することができました。

/** 
* 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クエリによって取得されたすべての要素のリストを表示できますか?

ありがとうございました:)

答えて

1

をこのように。その結果、あなたがそれをループに

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

コンソールで動作しますが、問題は、私はまだ前に、この配列をもたらすことはできないということですエンド/ジェイドエンジン。 – Dave

7

を持っているので、配列はジェイド

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 
    }); 
    } 
}); 

への完全な結果は、その後、私は「generalhenryためにあなたのジェイド

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

このコードは正確には動作しませんが、正しい方法で私を入れてください! – Dave

2

感謝の内側にそれらを反復渡しています方法を見つけました。

基本的には、サーバーjsのmysql get関数またはquery関数に他のものを追加する必要はありません。

このコードはすべて機能します。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

さらに良い

ul 
    - each result in results 
    li= result.text 
関連する問題