zoukankan      html  css  js  c++  java
  • NodeJs + koa2 + sequelize-auto + sequelize 搭建项目

    1、使用脚手架初始化koa项目 

     1.1 下载脚手架 (cmd命令行)   
    npm install -g koa-generator 
        1.2 在当前路径,使用koa-generator生成koa2项目(cmd命令行)
    koa2 koa-test-sequelize-auto
        1.3  进入koa-test-sequelize-auto目录(如果没有下载yarn的话,请全局下载yarn。  命令行:  npm  install -g yarn)
    yarn install 
        1.4  启动项目
    npm run dev
        1.5 通过浏览器查看是否启动成功
            浏览器输入localhost:3000,若出现以下内容,则初始化koa项目成功

    2、建立mysql数据库,并创建一些假数据

      2.1  通过navicat工具,新建一个test数据库

      2.2  在test数据库里执行下面这一段sql语句

    SET FOREIGN_KEY_CHECKS=0;
    
    -- ----------------------------
    -- Table structure for member
    -- ----------------------------
    DROP TABLE IF EXISTS `member`;
    CREATE TABLE `member` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `name` varchar(20) DEFAULT NULL,
      `sex` tinyint(4) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of member
    -- ----------------------------
    INSERT INTO `member` VALUES ('1', 'jacson', '0');
    INSERT INTO `member` VALUES ('2', 'jacson', '0');
    INSERT INTO `member` VALUES ('3', 'jacson', '0');
    INSERT INTO `member` VALUES ('4', 'jacson', '0');
    INSERT INTO `member` VALUES ('5', 'jacson', '0');
    INSERT INTO `member` VALUES ('6', 'jacson', '0');
    INSERT INTO `member` VALUES ('7', 'jacson', '0');
    INSERT INTO `member` VALUES ('8', 'jacson', '0');
    INSERT INTO `member` VALUES ('9', 'jacson', '0');
    INSERT INTO `member` VALUES ('10', 'jacson', '0');
    INSERT INTO `member` VALUES ('11', 'jacson', '0');
    INSERT INTO `member` VALUES ('12', 'jacson', '0');
    INSERT INTO `member` VALUES ('13', 'jacson', '0');
    INSERT INTO `member` VALUES ('14', 'jacson', '0');
    INSERT INTO `member` VALUES ('15', 'jacson', '0');
    INSERT INTO `member` VALUES ('16', 'jacson', '0');
    
    -- ----------------------------
    -- Table structure for user
    -- ----------------------------
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user` (
      `id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT,
      `name` varchar(255) DEFAULT NULL,
      `age` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of user
    -- ----------------------------
    INSERT INTO `user` VALUES ('00000000001', '你好', '15');
    INSERT INTO `user` VALUES ('00000000002', '我不好', '16');
    INSERT INTO `user` VALUES ('00000000003', '他好', '17');
    View Code

    3、建立orm库,并使用

      3.1  在当前项目中安装下面这几个依赖(cmd命令行)

    yarn add sequelize
    yarn add sequelize-auto
    yarn add mysql
    yarn add mysql2

      3.2  在当前目录下,新建一个auto.js文件(记住,自己替换database、user、password、port这几个mysql的参数)

      auto.js文件内容如下所示

    const SequelizeAuto = require('sequelize-auto')
    const auto = new SequelizeAuto(
        'database',     //数据库的库名
        'user',         //mysql数据库的用户名
        'password',     //mysql数据库的密码
        {
            host: '127.0.0.1',      // 数据库服务器ip
            dialect: 'mysql',
            directory: './models',  // prevents the program from writing to disk
            port: '3306',           // 数据库运行端口
            additional: {
                timestamps: false
            }
        }
    )
    auto.run(function (err) {
        if (err) throw err;
        // console.log(auto.tables); // table list
        // console.log(auto.foreignKeys); // foreign key list
    
        //生成models表后,直接执行项目
        require('./bin/www');
    });
    View Code

      3.3 在package.json里scripts里添加一行配置

    "auto": "node auto",

      3.4 执行下面的命令行,  生成models模型(在当前目录下会出现models文件,这些就是模型,如下图所示。)

    npm run auto

      3.5 在当前目录下,新建一个tool文件夹,文件夹内新建一个db.js文件

      db.js文件内容如下所示

    const Sequelize = require('sequelize');
    const fs = require("fs");
    const path = require("path");
    
    const basePathG = path.join(__dirname, '../models');
    
    let models = fs.readdirSync(basePathG);
    
    dbInit();
    
    async function dbInit() {
        let sequelize = await new Sequelize(
            'database',     //数据库的库名
            'user',         //mysql数据库的用户名
            'password',     //mysql数据库的密码
            {
                'dialect': 'mysql',     // 数据库使用mysql
                'host': '127.0.0.1',    // 数据库服务器ip
                'port': '3306',         // 数据库运行端口
                'timestamp': false,     // 这个参数为true是MySQL会自动给每条数据添加createdAt和updateAt字段
                'quoteIdentifiers': true
            }
        );
        models.forEach((item, index) => {
            let name = item.substr(0, item.length - 3);
            name = name.substring(0, 1).toUpperCase() + name.substring(1)   //首字母大写
    
            module.exports[name] = require(basePathG + `/${item}`)(sequelize, Sequelize.DataTypes)
        });
    }
    View Code

      3.6 到这里,我们就可以随便引用db了。然后可以肆无忌惮的使用orm库里的方法了

     

    3.7  通过url地址访问,查看我们的最终成果

    本项目所有代码皆上传至github。github地址:点我

    注:皆因sequelize-auto的网上教程有点少,故踩了不少坑,所以,自己写了一个。

  • 相关阅读:
    移动端必备rem布局
    个人工作经历、近些日来一些面试总结
    JavaScript面向对象核心知识归纳
    微信开发工具下载地址
    每天运动步数周月切换显示
    爬虫-requests
    django请求生命周期,FBV和CBV,ORM拾遗,Git
    Django + Uwsgi + Nginx 的生产环境部署
    沈阳润才教育CRM
    网络编程
  • 原文地址:https://www.cnblogs.com/huoan/p/10672417.html
Copyright © 2011-2022 走看看