2016-02-01 38 views
0

我知道您可以使用Waterline和模型方法,但問題是我必須訪問多個數據庫才能生成響應。除了模型方法之外,由於數據在不同數據庫下的不同數據庫中進行連接和傳遞,因此很難考慮解決方案。在啓動時創建數據庫連接 - sails.js

因此,我想知道如何使用mysql或mysql2原生驅動程序打開數據庫連接,並在應用程序中重複使用它。最合適的地方,掛鉤等在哪裏?應用程序關閉時如何關閉它們?

TA

回答

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(); 
     }); 
    }, 
    }; 
}; 
+0

這是相當在線與我的初衷。我不喜歡使用水線,更喜歡使用我自己的數據連接;) – jlanza

+0

我不喜歡吃水線,這就是爲什麼我爲此寫了一個自定義解決方案。另外我創建了一個Sequelize鉤子模塊:[https://github.com/festo/sails-hook-sequelize](https://github.com/festo/sails-hook-sequelize) – Festo

相關問題