Egg學習_Setp1_初始化項目添加數據庫

前言

本系列文章是Egg學習過程的一個記錄,初步目標是寫一個我的博客,會盡量多使用Egg中提供的各類功能.
本文所有使用 async 請確保Node版本足夠支持.
文中有不正確地方請指正.
GitHub地址: https://github.com/devil5263/...
Egg文檔: https://eggjs.org/zh-cn/intro/html

初始化項目

使用Egg腳手架初始化項目前端

$ npm instal egg-init -g
$ egg-init egg-example --type=simple // 選擇初始化項目的類型
$ cd egg-example
$ npm install

項目目錄結構vue

egg-project
├── package.json
├── app.js //自定義啓動時的初始化工做
├── app
|   ├── router.js // 配置 URL 路由規則
│   ├── controller // 控制層
│   |   └── auth.js // 業務邏輯-註冊登陸實現
│   ├── service // 業務邏輯層
│   |   └── auth.js // 業務邏輯-註冊登陸實現
|   ├── model // 數據庫表結構
│   |   └── user.js // 業務邏輯-user表
│   ├── middleware // 中間件
│   ├── schedule // 任務
│   └── extend // 框架的擴展
├── config // 初始化-全部配置文件
|   ├── plugin.js
|   ├── config.default.js
│   ├── config.prod.js
|   ├── config.test.js (可選)
|   ├── config.local.js (可選)
|   └── config.unittest.js (可選)
├── build // 前端webpack打包配置
|   ├── webpack.base.js
|   ├── webpack.dev.js
|   └── webpack.prod.js
├── resource// 前端源文件
|   ├── assets // 前端資源
|   ├── components // 前端組件
│   └── pages // 前端頁面
|       └── page1 // 某一頁面
|           ├── app.vue // vue單文件組件
|           ├── index.js // vue入口文件
|           ├── index.html // html頁面
|           └── js (可選) // store/router js文件
└── test // 初始化-單元測試用例
    ├── middleware
    |   └── response_time.test.js
    └── controller
        └── home.test.js

MySQL配置

這裏使用了兩個Egg的插件mysql

  • egg-mysql 用於鏈接MySQL(須要npm install egg-mysql)
  • egg-sequelize 用於定義model進行db層操做(須要安裝egg-sequelizemysql2兩個庫)

數據庫配置webpack

// {work_dir}/config/config.default.js
const database = "egg"; // 數據庫名字
module.exports = appInfo => {
  const config = {};
  config.keys = appInfo.name + "_1501817502166_7037";

  config.sequelize = { // egg-sequelize 配置
    dialect: "mysql", // db type
    database: database,
    host: "localhost",
    port: "3306",
    username: "root",
    password: ""
  };

  return config;
};

插件配置git

// {work_dir}/config/plugin.js
exports.sequelize = {
    enable: true,
    package: "egg-sequelize"
};

啓動時建立數據庫表github

// {work_dir}/app.js
module.exports = app => {
    app.beforeStart(async function () {
        await app.model.sync({ force: true });
    });
};

定義modelweb

// {work_dir}/app/model/user.js
module.exports = app => {
  const { STRING, INTEGER, DATE } = app.Sequelize;

  const User = app.model.define("user", {
    login: STRING,
    id: {
      type: INTEGER,
      primaryKey: true,
      autoIncrement: true
    },
    name: STRING(30),
    password: STRING(32),
    age: INTEGER,
    last_sign_in_at: DATE,
    created_at: DATE,
    updated_at: DATE
  });

  return User;
};

目前爲止,egg-example項目已初始化並添加了MySQL配置,成功啓動後會發現數據庫中已經有了定義的 model Usersql

相關文章
相關標籤/搜索