【问题标题】:Create databases connection on startup - sails.js在启动时创建数据库连接 -sails.js
【发布时间】:2016-02-01 16:01:28
【问题描述】:

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

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

TA

【问题讨论】:

    标签: mysql node.js database sails.js


    【解决方案1】:

    自定义挂钩将是您的最佳选择。对于 Redis,我创建了一个这样的:

    api/hooks/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();
          });
        },
      };
    };
    

    【讨论】:

    • 这完全符合我的想法。我不喜欢使用水线,更喜欢使用我自己的数据连接;)
    • 我也不喜欢水线,这就是我为此编写自定义解决方案的原因。我还创建了一个 Sequelize 钩子模块:https://github.com/festo/sails-hook-sequelize
    猜你喜欢
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2020-02-20
    • 2016-09-09
    相关资源
    最近更新 更多