封装一个sequelize-auto端口简易使用

  • A+

1. 前提已下载 sequelize mysql

2. 在项目中 : npm install sequelize-auto --save

3.创建auto.js

  1. var SequelizeAuto = require('sequelize-auto')
  2. var auto = new SequelizeAuto(
  3.     'MYSQL_DB_NAME', 'MYSQL_USERNAME', 'MYSQL_PASSWORD', {
  4.         host: 'MYSQL_HOST',
  5.         dialect: 'mysql',
  6.         directory: './models', // prevents the program from writing to disk
  7.         port: 'MYSQL_PORT',
  8.         additional: {
  9.             timestamps: false
  10.             //...
  11.         }
  12.     }
  13. )
  14. auto.run(function (err) {
  15.     if (err) throw err;
  16.     console.log(auto.tables); // table list
  17.     console.log(auto.foreignKeys); // foreign key list
  18. });

4.创建createModelsExport.js,自动在models生成index.js

  1. let fs = require('fs')
  2. let files = fs.readdirSync('./models')
  3. let models = []
  4. // 解析名称做成驼峰命名法
  5. files.forEach(item => {
  6.     if (item != 'index.js') {
  7.         let names = item.split('.')[0].split('_')
  8.         let name = ''
  9.         for (let i = 1; i < names.length; i++) {
  10.             name += names[i].substring(0,1).toUpperCase() + names[i].substring(1)
  11.         }
  12.         models.push({name: name, path: './' + item})
  13.     }
  14. })
  15. // 文件内容模板
  16. const template = `
  17. var  Sequelize = require('sequelize');
  18. // 创建数据库连接
  19. var sequelize = new Sequelize('MYSQL_DB_NAME', 'MYSQL_USERNAME', 'MYSQL_PASSWORD', {
  20.     host: 'MYSQL_HOST',
  21.     dialect: 'mysql',
  22.     pool: {
  23.         max: 5,
  24.         min: 0,
  25.         idle: 10000
  26.     }
  27. })
  28. // 数据库模型名称及路径
  29. const models =${JSON.stringify(models, null, 4)}
  30. // 数据模型输出
  31. models.forEach(item => {
  32.     module.exports[item.name] = require(item.path)(sequelize, Sequelize)
  33. })
  34. `
  35. fs.writeFile("./models/index.js", template, function () {
  36.     console.log('创建成功')
  37. })

5.生成的index.js

  1. var  Sequelize = require('sequelize');
  2. // 创建数据库连接
  3. var sequelize = new Sequelize('MYSQL_DB_NAME', 'MYSQL_USERNAME', 'MYSQL_PASSWORD', {
  4.     host: 'MYSQL_HOST',
  5.     dialect: 'mysql',
  6.     pool: {
  7.         max: 5,
  8.         min: 0,
  9.         idle: 10000
  10.     }
  11. })
  12. // 数据库模型名称及lujing
  13. const models =[
  14.     {
  15.         "name""ApplyInfo",
  16.         "path""./tb_apply_info.js"
  17.     },
  18.     {
  19.         "name""Branch",
  20.         "path""./tb_branch.js"
  21.     },
  22.     {
  23.         "name""Carousel",
  24.         "path""./tb_carousel.js"
  25.     },
  26.     {
  27.         "name""Comment",
  28.         "path""./tb_comment.js"
  29.     },
  30.     {
  31.         "name""CommentRelation",
  32.         "path""./tb_comment_relation.js"
  33.     },
  34.     {
  35.         "name""CommentUser",
  36.         "path""./tb_comment_user.js"
  37.     },
  38.     {
  39.         "name""Coordinate",
  40.         "path""./tb_coordinate.js"
  41.     },
  42.     {
  43.         "name""Forum",
  44.         "path""./tb_forum.js"
  45.     },
  46.     {
  47.         "name""ForumComment",
  48.         "path""./tb_forum_comment.js"
  49.     },
  50.     {
  51.         "name""Impress",
  52.         "path""./tb_impress.js"
  53.     },
  54.     {
  55.         "name""Integral",
  56.         "path""./tb_integral.js"
  57.     },
  58.     {
  59.         "name""IntegralRule",
  60.         "path""./tb_integral_rule.js"
  61.     },
  62.     {
  63.         "name""News",
  64.         "path""./tb_news.js"
  65.     },
  66.     {
  67.         "name""Notice",
  68.         "path""./tb_notice.js"
  69.     },
  70.     {
  71.         "name""PartyStyle",
  72.         "path""./tb_party_style.js"
  73.     },
  74.     {
  75.         "name""Payfee",
  76.         "path""./tb_payfee.js"
  77.     },
  78.     {
  79.         "name""Picture",
  80.         "path""./tb_picture.js"
  81.     },
  82.     {
  83.         "name""Report",
  84.         "path""./tb_report.js"
  85.     },
  86.     {
  87.         "name""StudyFile",
  88.         "path""./tb_study_file.js"
  89.     },
  90.     {
  91.         "name""User",
  92.         "path""./tb_user.js"
  93.     },
  94.     {
  95.         "name""Manager",
  96.         "path""./user_manager.js"
  97.     }
  98. ]
  99. // 数据模型输出
  100. models.forEach(item => {
  101.     module.exports[item.name] = require(item.path)(sequelize, Sequelize)
  102. })

6.在user.js中引出

  1. var express = require('express');
  2. var router = express.Router();
  3. var User = require('../models/').User
  4. /* GET users listing. */
  5. router.get('/login', function(req, res) {
  6.   var phone = req.query.phone
  7.   User.find({where: {phone: phone}})
  8.       .then( su => {
  9.             res.send({code: 200, message: '创建成功', data: su})
  10.           }
  11.       )
  12.       .catch( ex => {
  13.             res.send({code: 500, message: '服务器异常'})
  14.           }
  15.       )
  16. });
  17. module.exports = router;
weinxin
我的微信
这是我的微信扫一扫
kiven

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: