【问题标题】:Sailsjs fetch data from two different mysql databasesSailsjs 从两个不同的 mysql 数据库中获取数据
【发布时间】:2019-08-06 07:02:52
【问题描述】:

我正在使用sails js v 1.x 构建一个rest api 我需要连接两个 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",
}

当查询类似于select * from users(它使用默认数据库,即测试)时,我还有一个空白的用户模型和原始 sql 查询的执行工作完美。 如何在sails js中连接多个MySQL数据库来实现这种查询?

【问题讨论】:

  • select * from users 有效,因为table users 存在,但表test.users 显然在默认表上不存在。如果我理解,你想加入来自不同数据库的 2 个表吗?
  • 看我的回答。我能够解决问题

标签: javascript mysql node.js sails.js sails-postgresql


【解决方案1】:

我能够通过这种方式解决问题:

我的 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 中删除了数据库名称。现在我可以访问这个特定服务器上的所有数据库,还可以加入多个数据库。

【讨论】:

  • 我的配置:`默认值:{适配器:“sails-mysql”,主机:“127.0.0.1”,端口:“3306”,用户:“root”,密码:“mysql”,数据库:“erp”}`我的查询:`let test = await Document.getDatastore().sendNativeQuery("SELECT d.id, dl.name_hrv from erp.doc_documents d JOIN crm.common_documentLabels dl ON dl.id = d.label" ); ` 一切正常,你可以尝试这种类型的数据库配置。让我们知道这项工作适合你。
猜你喜欢
  • 1970-01-01
  • 2022-12-13
  • 2020-10-06
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多