Написание нескольких sql-запросов в nodejs

Я хочу отобразить все значения из двух таблиц из моей базы данных и отобразить их как 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);

Обратитесь к сообщение для различных подходов, которые могут помочь.

Durgesh Patel 03.03.2019 19:56
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
1
5 432
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В узле вы не используете ; в своих операторах 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);

Другие вопросы по теме