您现在的位置是:首页 > 后台文章 > NodeNode

使用egg.js和egg-sequelize链接mysql

譬如朝露2020-06-07Node133人已围观

简介通过 egg-init 初始化一个项目:egg-init --type=simple --dir=sequelize-project cd sequelize-project npm install --save egg-sequeliz...

通过 egg-init 初始化一个项目:

egg-init --type=simple --dir=sequelize-project
cd sequelize-project
npm install --save egg-sequelize mysql2

在 config/plugin.js 中引入 egg-sequelize 插件

exports.sequelize = {
  enable: true,
  package: 'egg-sequelize',
};

在配置数据库信息

/* eslint valid-jsdoc: "off" */

'use strict';

/**
 * @param {Egg.EggAppInfo} appInfo app info
 */
module.exports = appInfo => {
  /**
   * built-in config
   * @type {Egg.EggAppConfig}
   **/
  const config = exports = {};

  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '_1591433089914_3317';

  // add your middleware config here
  config.middleware = [];

  // add your user config here
  const userConfig = {
    // myAppName: 'egg',
  };
  config.sequelize = {
    // database configuration
    dialect: 'mysql', //数据库类型
    database: 'react-blog', //数据库名称
    host: '127.0.0.1', //数据库ip地址
    port: '3306',      //数据库端口
    username: 'root',   //数据库用户名
    password: 'root',
    freezeTableName: true,

    timezone: '+08:00'
  };
  return {
    ...config,
    ...userConfig,
  };
};

使用model 连接数据表

model/blog_content.js

module.exports = (app) => {
    const { STRING, INTEGER, TEXT } = app.Sequelize

    //表的名称需要与文件名一致,下划线返回转驼峰,不然返回undefined
    const BlogContent = app.model.define(
        'blog_content',
        {
            id: {
                type: INTEGER,
                primaryKey: true,//设置主键
                autoIncrement: true,//自增长 
            },
            title: {
                type: STRING(255),

            },
            type: {
                type: STRING,

            },
            description: {
                type: TEXT,

            },
            context: {
                type: TEXT,

            }
        },
        {
            freezeTableName: true, // Model 对应的表名将与model名相同
            timestamps: false,
        }
    );

    return BlogContent
}

数据库字段同步生成

router.js

module.exports = app => {
  require('./router/default')(app)
  app.beforeStart(async function () {
    await app.model.sync({ force: false })
  })

};

force为true 每次都会删除表重建,false会检测代码中创建的model文件在程序执行时创建表

调用model操作数据库

controller/default/home.js

'use strict';

const Controller = require('egg').Controller;

class HomeController extends Controller {

  async index() {

    const { ctx } = this;
    console.log(ctx.model.BlogContent)
    const content = await ctx.model.BlogContent.create({ title: "标题", type: '类型', description: "简介", context: "内容" });
    ctx.status = 201;
    ctx.body = content;
  }


}

module.exports = HomeController;


譬如朝露

文章评论

表情

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

站长特荐

关闭
QQ 微信 支付宝扫一扫打赏