egg-mysql 初始,Egg学习_Setp1_初始化项目添加数据库

前言

本系列文章是Egg学习过程的一个记录,初步目标是写一个个人博客,会尽可能多使用Egg中提供的各种功能.

本文全部使用 async 请确保Node版本足够支持.

文中有不正确地方请指正.

GitHub地址: https://github.com/devil5263/...

Egg文档: https://eggjs.org/zh-cn/intro/

初始化项目

使用Egg脚手架初始化项目

$ npm instal egg-init -g

$ egg-init egg-example --type=simple // 选择初始化项目的类型

$ cd egg-example

$ npm install

项目目录结构

egg-project

├── package.json

├── app.js //自定义启动时的初始化工作

├── app

| ├── router.js // 配置 URL 路由规则

│ ├── controller // 控制层

│ | └── auth.js // 业务逻辑-注册登录实现

│ ├── service // 业务逻辑层

│ | └── auth.js // 业务逻辑-注册登录实现

| ├── model // 数据库表结构

│ | └── user.js // 业务逻辑-user表

│ ├── middleware // 中间件

│ ├── schedule // 任务

│ ├── public // 静态资源

│ ├── view // 模板文件

│ └── extend // 框架的扩展

├── config // 初始化-所有配置文件

| ├── plugin.js

| ├── config.default.js

│ ├── config.prod.js

| ├── config.test.js (可选)

| ├── config.local.js (可选)

| └── config.unittest.js (可选)

└── test // 初始化-单元测试用例

├── middleware

| └── response_time.test.js

└── controller

└── home.test.js

MySQL配置

这里使用了两个Egg的插件

egg-mysql 用于连接MySQL(需要npm install egg-mysql)

egg-sequelize 用于定义model进行db层操作(需要安装egg-sequelize和mysql2两个库)

数据库配置

// {work_dir}/config/config.default.js

const database = "egg"; // 数据库名字

module.exports = appInfo => {

const config = {};

config.keys = appInfo.name + "_1501817502166_7037";

config.mysql = { // mysql 配置

client: {

host: "localhost",

port: "3306",

user: "root",

passsword: "",

database: database

}

};

config.sequelize = { // egg-sequelize 配置

dialect: "mysql", // db type

database: database,

host: "localhost",

port: "3306",

username: "root",

password: ""

};

return config;

};

插件配置

// {work_dir}/config/plugin.js

exports.mysql = {

enable: true,

package: "egg-mysql"

};

exports.sequelize = {

enable: true,

package: "egg-sequelize"

};

启动时创建数据库表

// {work_dir}/app.js

module.exports = app => {

app.beforeStart(async function () {

await app.model.sync({ force: true });

});

};

定义model

// {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

});

User.prototype.logSignin = async function () {

await this.update({ last_sign_in_at: new Date() });

};

return User;

};

目前为止,egg-example项目已初始化并添加了MySQL配置,成功启动后会发现数据库中已经有了定义的 model User

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值