Sailsjs извлекает данные из двух разных баз данных MySQL - PullRequest
0 голосов
/ 15 марта 2019

Я строю остальные API, используя паруса js v 1.x Мне нужно соединить две базы данных mysql, поэтому я определил их в файле config / datastores.js, как это:

module.exports.datastores = {
 default: {
      adapter: require('sails-mysql'),
      url: 'mysql://root:12345@192.168.0.5:3306/test',
    },
    mysqldb: {
      adapter: require('sails-mysql'),
      url: 'mysql://root:12345@192.168.0.5:3306/test2',
    },

};

В моемконтроллер, у меня есть эта функция, которая должна получить данные, присоединившись к тесту базы данных, а также test2

module.exports = {

    index: function (req, res) {
        User.getDatastore().sendNativeQuery("SELECT * from test.users u INNER JOIN test2.users t ON u.id=t.id limit 10",function(err, rawResult) {
            res.send(rawResult);
        })
    },

};

Но это дает мне ошибку:

{
   "code": "ER_NO_SUCH_TABLE",
    "errno": 1146,
    "sqlMessage": "Table 'test.users' doesn't exist",
}

Также у меня есть пустоеПользовательская модель и выполнение необработанных SQL-запросов прекрасно работают, когда запрос похож на select * from users (он использует базу данных по умолчанию, то есть тест) Как мне достичь такого типа запросов, подключив более одной базы данных MySQL в sails js?

1 Ответ

0 голосов
/ 15 марта 2019

Я смог решить проблему следующим образом:

мой файл config.datastore:

module.exports.datastores = {
 default: {
      adapter: require('sails-mysql'),
      url: 'mysql://root:12345@192.168.0.5:3306/',
    },

};

Мой контроллер:

module.exports = {

    index: function (req, res) {
        User.getDatastore().sendNativeQuery("SELECT * from test.users u INNER JOIN test2.users t ON u.id=t.id limit 10",function(err, rawResult) {
            res.send(rawResult);
        })
    },

};

Сначала возникли проблемы с его выяснением, так как нет такого примера, показывающего объединение нескольких таблиц из разных баз данных при использовании необработанных запросов MySQL.

Единственное изменение, которое я сделал, я просто удалил имя базы данных из URL-адреса соединения по умолчанию. Теперь я могу получить доступ ко всем базам данных на этом конкретном сервере, а также к нескольким базам данных.

...