在启动时创建数据库连接 - sails.js

时间:2016-02-01 16:01:29

标签: mysql node.js database sails.js

我知道您可以使用Waterline和模型方法,但问题是我必须访问多个数据库才能生成响应。除了模型方法之外,由于数据在不同数据库下的不同表中被连接和传播,因此很难对解决方案进行思考。

因此,我想知道如何使用mysql或mysql2本机驱动程序打开数据库连接,并在整个应用程序中重复使用它。哪个地方最合适的地方,一个挂钩等?如何在应用程序停机时关闭它们?

TA

1 个答案:

答案 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();
      });
    },
  };
};
相关问题