GraphQL 是一个开源的图形数据库(基于Node.js实现), sequelize-auto 将 MySQL 数据库转变成模型。
GraphQL 是一个开源的图形数据库(基于Node.js实现), 中文文档: https://GraphQL.js.cool/
sequelize-auto 将 MySQL 数据库转变成模型
- [node]sequelize-auto-h<host>-d<database>-u<user>-x[password]-p[port]--dialect[dialect]-c[/path/to/config]-o[/path/to/models]-t[tableName]-C参数:-h,--host主机地址[必须]-d,--database数据名[必须]-u,--user用户名-x,--pass密码-p,--port端口号-c,--config配置文件,参考:https://sequelize.readthedocs.org/en/latest/api/sequelize/-o,--output输出目录-e,--dialect数据库引擎:postgres,mysql,sqlite-t,--tables需要导入的表-T,--skip-tables需要排除的表-C,--camel使用用驼峰命名法-n,--no-write不需要写入文件-s,--schema数据库结构
使用数据模型
这里是生成的一个示例模型:
- /*jshintindent:2*/
- module.exports=function(sequelize,DataTypes){
- returnsequelize.define('d_user',{
- uid:{
- type:DataTypes.INTEGER(11).UNSIGNED,
- allowNull:false,
- primaryKey:true
- },
- username:{
- type:DataTypes.STRING(16),
- allowNull:false,
- defaultValue:''
- },
- mobile:{
- type:DataTypes.STRING(16),
- allowNull:false,
- defaultValue:''
- },
- email:{
- type:DataTypes.STRING(32),
- allowNull:false,
- defaultValue:''
- },
- password:{
- type:DataTypes.STRING(32),
- allowNull:false,
- defaultValue:''
- },
- salt:{
- type:DataTypes.STRING(8),
- allowNull:false,
- defaultValue:''
- },
- updatedAt:{
- type:DataTypes.INTEGER(10).UNSIGNED,
- allowNull:false
- }
- },{
- tableName:'user'
- });
- };
创建数据库模型:
- constSequelize=require('sequelize');constDb=newSequelize('数据库名','用户名','密码',{host:'localhost',dialect:'mysql'})constUser=Db.define('user',{uid:{type:Sequelize.INTEGER(11).UNSIGNED,allowNull:false,primaryKey:true},username:{type:Sequelize.STRING(16),allowNull:false,defaultValue:''},mobile:{type:Sequelize.STRING(16),allowNull:false,defaultValue:''},email:{type:Sequelize.STRING(32),allowNull:false,defaultValue:''},password:{type:Sequelize.STRING(32),allowNull:false,defaultValue:''},salt:{type:Sequelize.STRING(8),allowNull:false,defaultValue:''}},{tableName:'user',//取消默认的时间戳,否则会报createdAt不存在错误timestamps:false});Db.sync();module.exports={Db,User};
graphql-sequelize 转换 MySQL -> GraphQL 结构
- const{GraphQLObjectType,GraphQLSchema,GraphQLList,GraphQLInt,GraphQLString}=require('graphql');
- const{attributeFields,resolver}=require('graphql-sequelize');
- const{Db,User}=require('./db');
- userType=newGraphQLObjectType({
- name:'User',
- description:'Auser',
- fields:attributeFields(User)
- });
- constQuery=newGraphQLObjectType({
- name:'Query',
- description:'Rootqueryobject',
- fields:()=>{
- return{
- user:{
- type:newGraphQLList(userType),
- args:{
- uid:{
- type:GraphQLInt
- },
- email:{
- type:GraphQLString
- }
- },
- resolve(root,args){
- returnDb.models.user.findAll({where:args});
- }
- }
- };
- }
- });
- constSchema=newGraphQLSchema({
- query:Query
- });
- module.exports=Schema;
启动服务器
- constExpress=require('express');
- constGraphHTTP=require('express-graphql');
- constSchema=require('./schema');
- //Config
- constAPP_PORT=3000;
- //Start
- constapp=Express();
- //GraphQL
- app.use('/graphql',GraphHTTP({
- schema:Schema,
- pretty:true,
- graphiql:true
- }));
- app.listen(APP_PORT,()=>{
- console.log(`Applisteningonport${APP_PORT}`);
转载请说明出处
知优网 » MySQL向GraphQL迁移(mysql表数据迁移)
知优网 » MySQL向GraphQL迁移(mysql表数据迁移)