Задать вопрос
ogregor
@ogregor
арендатор vpn сервера debian

В чем опасность применения глобальных переменных в node.js?

Решил вынести реализацию DB моделей и методов в отдельный файл, использую глобальные переменные. Вобще так допускается делать? И какие проблемы могут возникнуть?
index.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

require('./js/dbmodels.js');

io.on('connection', function(socket){
  socket.on('get-struct message', function(data){
 
      global.Decode('sZ5gz9EBe959XKgnsdEwNN7QLAKK6vnxQMnhEuKDT0g').then(function(result){
        console.log(result);
      });
    socket.emit('get-struct message', data);
  });
});
 
});


dbmodels.js
var Sequelize = require('sequelize');
var sequelize = new Sequelize('mysql://datas:prf34NAZ6AwP@127.0.0.1:5543/datas');
var MCrypt = require('mcrypt').MCrypt;

global.Registry = sequelize.define('registry', {
    id: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        primaryKey: true
    },
    sub_id: {
        type: Sequelize.INTEGER,
        primaryKey: true
    },
    item: {
        type: Sequelize.CHAR()
    },
    value: {
        type: Sequelize.TEXT
    },
    up_date: {
        type: Sequelize.DATE,
        defaultValue: Sequelize.NOW
    }
},{
    timestamps: false,
    freezeTableName: true
});

global.getRegistry = function (value) {
    return global.Registry.findOne({
        where: {item: value},
        attributes: ['value']}).then(function (result) {
        return result.value;
    });
};

global.Decode = function (value) {
    return global.getRegistry('module_crypt_key').then(function (secret) {
        var desEcb = new MCrypt('rijndael-256', 'ecb');     
        desEcb.open(secret);
        return desEcb.decrypt(new Buffer(value, 'base64')).toString();
        
    });
};
  • Вопрос задан
  • 239 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы