Лучше всего использовать модуль внутри Sails.js по всему миру?

В настоящее время я создаю часть проверки подлинности моего приложения Sails.js, используя bcrypt для хеширования моих паролей. Все работает хорошо, вот пример реализации:

beforeCreate: function (values, next) {

    require('bcrypt').hash(values.password, 10, function passwordEncrypted(err, encryptedPassword) {

        if (err) return next(err);

        values.password = encryptedPassword;
        next();

    });

}

Теперь, как в моем model, так и в моем controller, я использую require('bcrypt') или var bcrypt = require('bcrypt');, поэтому я могу использовать его в своем классе.

Я ищу более эффективный способ определения var bcrypt = require('bcrypt'); один раз и глобально, чтобы я мог просто использовать переменную bcrypt всякий раз, когда мне нужно (внутри других моделей или контроллеров).

Я склонен полагать, что у Sails.js уже есть что-то для этого? Если нет, что вы предлагаете для наилучшего пути реализации? В конце концов, я ищу лучшую практику.

Спасибо заранее!

Ответ 1

Так как Node.js-модули кэшируются, как только они загружаются впервые, повторное использование require('bcrypt') или не будет иметь никакого значения в терминах производительность.

Тем не менее, если вы все еще делаете это по-своему, вы можете потребовать bcrypt в config/bootstrap.js и добавить его в пространство имен sails:

module.exports.bootstrap = function (cb) {
  sails.bcrypt = require('bcrypt');

  //...

  cb();
}

После этого вы сможете использовать sails.bcrypt в своих контроллерах или моделях.