使用Sails js版本1提升后的动态数据库连接

时间:2018-07-21 12:46:25

标签: node.js sails.js waterline

我只想要MYsql解决方案

我想根据请求切换数据库 我已经在Sails的先前版本中实现了它,但是有了这个新版本(1.0.0) 我做不到 changelist

没有文档

我有主数据库,可以说DB_A,在用户拥有自己的数据库进行交互之后,我将其用作默认数据存储来对用户进行身份验证 提起后,它可以是系统中存在的任何数据库,用户可以通过该数据库进行连接和提取

我发现了一些选择

1)重新加载orm

2)创建管理器

但是不知道如何使用它,因为没有一个建议

有人可以帮助我

1 个答案:

答案 0 :(得分:0)

我在Sails应用程序中使用PostgreSQL时遇到了类似的问题。一世     在下面找到了解决方法。     即npm install pg。      在您的情况下,安装mysql插件,即mysql中的npm

我已经在sails app controllers文件夹中创建了dbconnections.js

const a = {
  host: 'abc.com',
  port: 'xxxx',
  database: 'xxxx',
  user: 'xxxx',
  password: 'xxxx'
}

const b = {
  host: 'ecd.com',
 port: 'xxxx',
  database: 'xxxx',
  user: 'xxxx',
  password: 'xxxx'
}


module.exports = { a: a, b: b};

然后在其他控制器中,我使用了pg插件来匹配用户传递的数据库      通过api进行环境

即在我的其他控制器中

var sourceFile = require('./dbconnections.js');

const {
      Client
    } = require('pg');

对于您的情况,您可以按照以下https://www.npmjs.com/package/mysql进行操作      创建连接对象并按照以下逻辑进行动态连接      到不同的数据库

    var match_env;

    for (x in sourceFile) {

      if (x === env) {
        match_env = sourceFile[x];

      }
    }

    const client = new Client(match_env)

现在客户端对象将拥有所有可以执行的postgresql事务       执行,即         client.connect()         const qry =“ select * from city =” newyork“的人;         client.query(qry,function(err,resp){

    console.log("before", client)

    client.end();
    console.log("after", client)
    //user = JSON.parse(user);
    if (err) {
      return res.json({
        error: err
      });
    }
    if (resp === undefined) {
      return res.notFound();
    } else
      console.log(resp);
    return res.json({
      userData: resp.rows
    });

  }

);

根据用例,我们可以将以上代码移至其他js文件并调用     在作为     尽可能多的控制器,这将与多个数据库一起使用     在Sails应用中连接Postgres sql。