0
我知道您可以使用Waterline和模型方法,但問題是我必須訪問多個數據庫才能生成響應。除了模型方法之外,由於數據在不同數據庫下的不同數據庫中進行連接和傳遞,因此很難考慮解決方案。在啓動時創建數據庫連接 - sails.js
因此,我想知道如何使用mysql或mysql2原生驅動程序打開數據庫連接,並在應用程序中重複使用它。最合適的地方,掛鉤等在哪裏?應用程序關閉時如何關閉它們?
TA
我知道您可以使用Waterline和模型方法,但問題是我必須訪問多個數據庫才能生成響應。除了模型方法之外,由於數據在不同數據庫下的不同數據庫中進行連接和傳遞,因此很難考慮解決方案。在啓動時創建數據庫連接 - sails.js
因此,我想知道如何使用mysql或mysql2原生驅動程序打開數據庫連接,並在應用程序中重複使用它。最合適的地方,掛鉤等在哪裏?應用程序關閉時如何關閉它們?
TA
自定義鉤子將是最適合你的。對於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();
});
},
};
};
這是相當在線與我的初衷。我不喜歡使用水線,更喜歡使用我自己的數據連接;) – jlanza
我不喜歡吃水線,這就是爲什麼我爲此寫了一個自定義解決方案。另外我創建了一個Sequelize鉤子模塊:[https://github.com/festo/sails-hook-sequelize](https://github.com/festo/sails-hook-sequelize) – Festo