index.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. const fs = require('fs');
  2. const path = require('path');
  3. const Sequelize = require('sequelize');
  4. const basename = path.basename(module.filename);
  5. const config = require('../config/config.json');
  6. const env = process.env.NODE_ENV || 'development';
  7. const db = {};
  8. let options = {
  9. define: {
  10. charset: 'utf8mb4',
  11. collate: 'utf8mb4_general_ci'
  12. },
  13. dialectOptions: {
  14. charset: 'utf8mb4'
  15. }
  16. }
  17. if(env === 'production') {
  18. var sequelize = new Sequelize(process.env.DATABASE_URL, options)
  19. } else {
  20. var sequelize = new Sequelize(
  21. config[env].database, config[env].username, config[env].password, {
  22. host: config[env].host,
  23. dialect: config[env].dialect,
  24. logging: false,
  25. ...options
  26. }
  27. );
  28. }
  29. fs
  30. .readdirSync(__dirname)
  31. .filter(file =>
  32. (file.indexOf('.') !== 0) &&
  33. (file !== basename) &&
  34. (file.slice(-3) === '.js'))
  35. .forEach(file => {
  36. const model = sequelize.import(path.join(__dirname, file));
  37. db[model.name] = model;
  38. });
  39. Object.keys(db).forEach(modelName => {
  40. if (db[modelName].associate) {
  41. db[modelName].associate(db);
  42. }
  43. });
  44. db.sequelize = sequelize;
  45. db.Sequelize = Sequelize;
  46. module.exports = db;