Sails js:如何在Sails js的单个模型中定义两个到两个不同数据库的MySQL连接?

我创build了一个模型Employee.js和EmployeeController.js。 我在Employee.js文件中定义了两个连接:

module.exports = { connection: 'LocalhostMysqlServer', attributes: { name:{ type:"string", required:true, }, empnum:{ type:"integer", required:true, unique: true }, email:{ type:"string", required:true, unique: true } }, connection: 'LocalhostMysqlServer1', attributes: { username:{ type:"string", required:true, }, usrnum:{ type:"integer", required:true, unique: true }, email:{ type:"string", required:true, unique: true } }, }; 

下面是我的EmployeeController.js文件,其中包含两个视图:CreateEmp和CreateUsr,与此模型和控制器关联。 另外,我定义了两个函数来处理来自这些视图的请求。 在这里,我想从CreateEmp插入数据到不同的数据库,并从CreateUsr插入到不同的数据库。

  module.exports = { createEmp: function(req,res){ 'use strict'; res.view('new.ejs'); }, createUsr: function(req,res){ 'use strict'; res.view('newUser.ejs'); }, createEmployee: function(req, res){ if(req.method=="POST"){ var name= req.param("name"); var empnum= req.param("empnum"); var email= req.param("email"); var insert= "INSERT INTO employee(name, empnum, email) VALUES ('"+name+"', "+empnum+", '"+email+"')"; Employee.query(insert, function(err, record){ if(err) console.log(err); else{ console.log(record); } }) } }, createUser: function(req, res){ if(req.method=="POST"){ var username= req.param("username"); var usrnum= req.param("usrnum"); var email= req.param("email"); var insert= "INSERT INTO user (username, usrnum, email) VALUES ('"+username+"', "+usrnum+", '"+email+"')"; Employee.query(insert, function(err, record){ if(err) console.log(err); else{ console.log(record); } }) } }, }; 

我在这里包含了我的config / connections.js文件:

  module.exports.connections = { localDiskDb: { adapter: 'sails-disk' }, LocalhostMysqlServer: { adapter: 'sails-mysql', //module: 'sails-mysql', host: 'localhost', user: 'root', password: 'disisanshu', database: 'sailsTest1', tableName: 'employee' }, LocalhostMysqlServer1: { adapter: 'sails-mysql', host: 'localhost', user: 'root', password: 'disisanshu', database: 'sailsTest2', tableName: 'user' } }; 

在这里我已经包含了我的model.js如下:

  module.exports.models = { // migrate: 'alter' connection: 'LocalhostMysqlServer', migrate: 'alter', connection1: 'LocalhostMysqlServer1', migrate: 'alter' }; 

你没有理由为什么要这样做。

您可能正在减less数据库上的负载。 应该实施一种主从式的数据库结构。

此外,数据库应该完全从您的应用程序的其余部分分离。这就是为什么你应该只有一个连接。 如果你的数据库的负载增加,横向扩展(增加更多的服务器来分配负载) – mySQL对于这些东西是有好处的。 这可以而且应该在你的应用代码没有任何改变的情况下完成。

你不能在同一个模型中使用两个不同的连接 – 希望没有文件说这是可能的! 你只需要定义两个不同的模型。

另外,在对象中声明两次相同的密钥并不是真正有效的Javascript(就像你在第一个代码块中进行connection ,而在最后一次进行migrate时)。 如果第二个定义不同,第二个定义将会覆盖第一个定义。