Getting the entire contents of a MySQL query to the Jade template engine through NodeJS and Express

A simple newbie question, I start with nodejs, and I'm pretty new to backend languages ​​in general.

I managed to publish one field from the database to a web page using the default jade mechanism in 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); 

My question is, how can I show a list of all the items received as a result of a MySQL query?

Thanks:)

+6
source share
4 answers

Like it. Results is an array, so you need to iterate over it

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

Spend full results in 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 }); } }); 

Then iterate over them inside your jade

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

Even better

 ul - each result in results li= result.text 
+4
source

Thanks to generalhenry, I found a way.

Basically, I don't need to add other things to the mysql get function or the query function on the js server.

Everything about the jade mechanism, this code works: take as the input variable that you pass from the get function (in this case the results), and iterate through it, choosing the field you need.

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

Hope can help others in the future :)

+2
source

Source: https://habr.com/ru/post/894121/


All Articles