通过 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;
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接