zhongxia245 / blog

这是一个Blog, 如果喜欢可以订阅,是Watch, 不是 Star 哈。。。
https://zhongxia245.github.io/blog/
160 stars 33 forks source link

【20170410】NodeJs代码生成MySQL表,MySQL表直接导出实体类 #88

Closed zhongxia245 closed 5 years ago

zhongxia245 commented 7 years ago

参考文章

  1. 《 node orm sequelize model-table 互相生成》

初始化开发环境,我们需要为我们的数据库创建表,如果每一个开发环境都要手动创建表的话,那实在是浪费时间又麻烦。 那么可以直接用代码来创建表,或者从现有的数据库中,导出实体类。 大大降低这种体力劳动。

一、利用Node代码,创建MYSQL数据库表

  1. 连接到数据库
    
    //applicationMysql.js

var Sequelize = require('sequelize'); var sequelize = new Sequelize('db', 'root', 'root', { host: 'localhost', dialect: 'MySQL', pool: { max: 5, min: 0, idle: 10000 }, Sequelize :Sequelize });

function ApplicationMysql(){ return sequelize; } module.exports = new ApplicationMysql();


2. 生成user表

//user.js

var app = require('../server/applicationMysql.js'); User = app.define('user',{ firstName: { type: app.Sequelize.STRING, // field: 'first_name' // Will result in an attribute that is firstName when user facing but first_name in the database }, lastName: { type: app.Sequelize.STRING } },{ freezeTableName: true // Model tableName will be the same as the model name });

app.sync().then(function() { User.create({ firstName: 'qi', lastName: 'shuo' }); }); module.exports = User;


此时,连接上数据库查询一下,发现多了一张 user的表

![](https://ww4.sinaimg.cn/large/006tKfTcly1fehpo26lhuj309m042jrg.jpg)

## 二、MySQL表直接生成实体类
>利用sequelize-auto   table生成model

从数据库中生成实体类

sequelize-auto -o "./mysqltest" -d databaseName -h localhost -u username -p 3306 -x password -e mysql

/ jshint indent: 2 /

module.exports = function(sequelize, DataTypes) { return sequelize.define('user', { id: { type: DataTypes.INTEGER(11), allowNull: false, primaryKey: true, autoIncrement: true }, firstName: { type: DataTypes.STRING(255), allowNull: true }, lastName: { type: DataTypes.STRING(255), allowNull: true }, createdAt: { type: DataTypes.DATE, allowNull: false }, updatedAt: { type: DataTypes.DATE, allowNull: false } }, { tableName: 'user' }); };