我知道您可以使用Waterline和模型方法,但问题是我必须访问多个数据库才能生成响应。除了模型方法之外,由于数据在不同数据库下的不同表中被连接和传播,因此很难对解决方案进行思考。
因此,我想知道如何使用mysql或mysql2本机驱动程序打开数据库连接,并在整个应用程序中重复使用它。哪个地方最合适的地方,一个挂钩等?如何在应用程序停机时关闭它们?
TA
答案 0 :(得分:1)
自定义挂钩最适合您。对于Redis,我创建了一个这样的:
API /钩/ redis的/ index.js
var redisModule = require('redis');
module.exports = function connectToRedis(sails) {
return {
connectToRedis: function (callback) {
var hook = this;
var config = sails.config.connections.redis;
var redisClient = redisModule.createClient(config.port, config.host);
hook.initAdapters();
redisClient.on('connect', function () {
sails.log.verbose('Connection to redis was succesfull!');
// select db
redisClient.select(config.db, function (err) {
if (err) {
return callback(err);
}
sails.adapters.redis = redisClient;
callback();
});
});
redisClient.on('error', function (error) {
sails.log.error(error);
callback();
});
},
initAdapters: function () {
if (sails.adapters === undefined) {
sails.adapters = {};
}
},
// Run automatically when the hook initializes
initialize: function (cb) {
var hook = this;
hook.connectToRedis(function() {
cb();
});
},
};
};