извлекать данные из таблиц разных баз данных в node js express - PullRequest
0 голосов
/ 20 марта 2020

Я выполняю следующий запрос. Этот запрос не извлекает данные из таблиц двух разных баз данных db1 и db2. Я знаю, что могу получить данные из таблиц одной базы данных. Я пытался найти решение. Но я не смог найти решение.

var mysql = require ('mysql');

const connection = mysql.createConnection({
    host: _host,
    user: _user,
    password : _password,
    database : _database
});

 connection.connect(function(err) {
 if (err) {
   console.error('error connecting: ' + err.stack);
   return;
   }

 });



query = `SELECT db1.users.username, db2.posts.post_id from db1.users, db2.posts where db2.posts.user_id=db1.user.id`;


connection.query(query, function (error, results, fields) {
if (error) throw error;


  res.send(results);
});

connection.end();

1 Ответ

0 голосов
/ 20 марта 2020

Редактировать Вы можете использовать MySQL для запроса нескольких различных баз данных одним запросом, , если все базы данных находятся на одном сервере. (Если они включены на разных серверах есть способы сделать то, что вы хотите, но вам потребуется помощь опытного администратора базы данных.)

Соединения, которые вы создаете, не относятся к базе данных, они к серверу . После подключения к серверу вы можете запрашивать несколько баз данных, если у вашего user есть разрешение на доступ к ним.

В вашем запросе есть ошибка. Вы должны упомянуть db1.users.id вместо db1.id.

И вы должны использовать современный SQL с JOIN / ON. Используемый вами синтаксис запятой-соединения устарел уже почти три десятилетия. Попробуйте это.

SELECT u.username, p.post_id
  FROM db1.users u
  JOIN db2.posts p ON p.user_id = u.id

При отладке такого рода вещей вы должны рассмотреть возможность использования console.error() немного больше. Как то так для обработки ошибок?

      connection.query(query, function (error, results, fields) {
        if (error) {
            console.error (query, error);
            return next(error);   // if you're in node/express
            throw (error);        // if you're not in node/express
        }
        res.send(results);
      });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...