Я хочу отобразить все значения из двух таблиц из моей базы данных и отобразить их как console.info. Если я пишу один запрос в var sql и отображаю его как console.info(результаты), он работает, но не для нескольких запросов.
var express = require('express');
var app = express();
let mysql = require('mysql')
let connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'pitch_perfect_db2',
multipleStatements: true
})
app.get('/',(req, res) => {
connection.connect();
var sql = 'SELECT * FROM investors?; SELECT * FROM member_info?;'
connection.query(sql, function(err, results, fields){
if (!err) {
// res.send(JSON.stringify(results[0]));
// res.send(JSON.stringify(results[1]));
console.info('hey');
//console.info(results);
console.info(results[0]);
console.info(results[1]);
} else{
console.info('Error while performing query.');
}
});
connection.end();
})
//app.listen(port, () => console.info('Server Started pn port ${port}'));
app.listen(3002);






В узле вы не используете ; в своих операторах sql. Предполагая, что таблицы investors и member_info имеют одинаковое количество столбцов, вам нужно будет использовать это:
var sql = 'SELECT * FROM investors UNION ALL SELECT * FROM member_info';
В качестве альтернативы, если investors и member_info не связаны между собой таблицы, вам нужно будет перейти в ад обратного звонка, чтобы получить то, что вам нужно:
app.get('/',(req, res) => {
connection.connect();
var sql1 = 'SELECT * FROM investors';
var sql2 = 'SELECT * FROM member_info?';
connection.query(sql1, function(err, investors){
if (err) throw err; //you should use this for error handling when in a development environment
console.info(investors); //this should print
connection.query(sql2, function(err, members) {
if (err) throw err;
console.info(members);
res.render('your view', {investors:investors, members:members});
});
});
});
Если вы выберете последний подход, я настоятельно рекомендую вам пересмотреть структуру вашей базы данных.
Если какая-либо из таблиц в ваших примерах имеет отношение внешнего ключа друг к другу, вы должны использовать определенно для этих таблиц какой-то оператор JOIN вместо UNION.
Я смог заставить его работать, но мне нужно было сделать 2 вещи:
Сначала я переименовал таблицы, чтобы удалить вопросительный знак, поскольку он всегда переводился на «1», а имя таблицы больше не соответствовало тому, что было в БД.
Во-вторых, я добавил массив в connection.query(). После этого он работал нормально.
Дополнительная информация здесь
var express = require('express');
var app = express();
let mysql = require('mysql')
let connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'pitch_perfect_db2',
multipleStatements: true
})
app.get('/',(req, res) => {
connection.connect();
var sql = 'SELECT * FROM investors; SELECT * FROM member_info;';
//var sql = 'SELECT * FROM investors;';
connection.query(sql, [1, 2], function(err, results, fields){
if (!err) {
res.send(JSON.stringify(results[0]) + JSON.stringify(results[1]));
console.info('hey');
//console.info(results);
console.info(results[0]);
console.info(results[1]);
} else{
console.info('Error while performing query.');
console.info(err);
}
});
connection.end();
})
//app.listen(port, () => console.info('Server Started pn port ${port}'));
app.listen(3002);
Обратитесь к сообщение для различных подходов, которые могут помочь.