sequelize mysql_Egg中使用Sequelize ORM框架操作Mysql

Sequelize视频教程_Eggjs仿小米商城企业级Nodejs项目实战视频教程: https://www.itying.com/goods-941.html

一、Sequelize简介

前面的章节中,我们介绍了如何在框架中通过 egg-mysql 插件来访问数据库。而在一些较为复杂的应用中,我们可能会需要一个 ORM 框架来帮助我们管理数据层的代码。而在 Node.js 社区中,sequelize 是一个广泛使用的 ORM 框架,它支持 MySQL、SQLite 和 MSSQL 、PostgreSQL等多个数据源。下面我们主要给大家讲讲sequelize 结合MySQL的使用。

相关文档:

二、Sequelize 操作Mysql数据库

1、安装egg-sequelize以及mysql2

npm install --save egg-sequelize mysql2

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

exports.sequelize = {

enable: true,

package: 'egg-sequelize',

};

3、 在 config/config.default.js 中编写 sequelize 配置

config.sequelize = {

dialect: 'mysql',

host: '127.0.0.1',

port: 3306,

database: 'test',

username:"root",

password:"123456"

};

三、Sequelize 操作Mysql实现增删改查

1、在app/model/ 目录下编写数据库Model,以用户表user为例

'use strict';

module.exports = app => {

const { STRING, INTEGER, DATE } = app.Sequelize;

const User = app.model.define('user', {

id: { type: INTEGER, primaryKey: true, autoIncrement: true },

name: STRING(30),

age: INTEGER,

created_at: DATE,

updated_at: DATE,

});

return User;

};

或者

'use strict';

module.exports = app => {

const { STRING, INTEGER, DATE } = app.Sequelize;

const User = app.model.define('user', {

id: { type: INTEGER, primaryKey: true, autoIncrement: true },

name: STRING(30),

age: INTEGER,

created_at: DATE,

updated_at: DATE,

},{

freezeTableName: true,

tableName: 'user_info'

});

return User;

};

2、定义controller实现数据库的增删改查

async index() {

const ctx = this.ctx;

ctx.body = await ctx.model.User.findAll({limit: 10, offset: 0,order:[["id","desc"]]});

//指定返回的字段

//ctx.body = await ctx.model.User.findAll({attributes: ['id', 'name'],limit: 10,order:[["id","desc"]]});

}

async findOne() {

const ctx = this.ctx;

var result = await ctx.model.User.findByPk(106);

ctx.body=result || '';

}

async create() {

const ctx = this.ctx;

const user = await ctx.model.User.create({ name:"张三", age:20 });

ctx.status = 201;

ctx.body = user;

}

async update() {

const ctx = this.ctx;

const id = 106;

const user = await ctx.model.User.findByPk(id);

if (!user) {

ctx.status = 404;

return;

}

await user.update({ name:"李四", age:43 });

ctx.body = user;

}

async destroy() {

const ctx = this.ctx;

const id = 213;

const user = await ctx.model.User.findByPk(id);

if (!user) {

ctx.status = 404;

return;

}

await user.destroy();

ctx.status = 200;

ctx.body="删除成功";

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值