我正在使用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',
},
};
在我的控制器中,我具有此功能,该功能需要通过加入数据库test和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查询的执行非常完美(它使用默认数据库,即test)
如何通过Sails js连接多个MySQL数据库来实现这种查询?
答案 0 :(得分:0)
我能够通过这种方式解决问题:
我的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中删除了数据库名称。现在,我可以访问此特定服务器上的所有数据库,还可以加入多个数据库。