Решил вынести реализацию 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();
});
};