egg结合mysql如何做数据返回_egg-mysql使⽤体验和笔记体验
我以为会有laravel那种ORM⽀持呢,看来是想多了,不过官⽅提供了⼀个egg-sequelize插件,还是很不错的,下⾯是egg-mysql的学习笔记
安装
需要使⽤egg提供的⼀个egg-mysql插件来进⾏数据库交互,所以
mysql下载app⾸先安装egg-mysql npm包,执⾏命令:
$ npm i --save egg-mysql
然后在项⽬插件配置⽂件中开启插件
// config/sql = {
enable: true,// 开启 package: 'egg-mysql', // 对应哪个包};
配置
接下来就需要配置数据库账号等信息了,egg提供⼀种多环境配置,就是咱即可以配置⾃⼰本地的数据库信息,也可以配置测试环境、线上环境数据库信息,只需要再config下创建config.${env}.js⽂件即可,⽐如config.location.js为我本地配置,config.prod.js为线上环境,然后在config/env⽂件内指定运⾏环境即可。
当然也可以默认都⽤⼀个配置。我⽤config/config.default.js来作为默认配置⽂件。
// sql = {
client: {
// host host: 'localhost',
// 端⼝号 port: '3306',
// ⽤户名 user: 'root',
// 密码 password: 'root',
// 数据库名 database: 'test',
},
// 是否加载到 app 上,默认开启 app: true,
// 是否加载到 agent 上,默认关闭 agent: false,
}
使⽤
如何在项⽬中增删改查呢?你可以直接在controller⾥边直接这样⽤,不过建议⾃⼰写⼀个service来过度下业务
get 查询单条信息
let user = await ('users', { id: 1 });
2. select 查询多条数据
let users= await sql.select('users');
3. select 有条件的查询,蛋疼的是,他的条件只⽀持=和in,真鸡⼉,想⾃定义还需要⽤query
let users = await sql.select('users', {
where: {
name: ['test', 'test1'], // 相当于 in },
order: [['created_at', 'desc'], ['state', 'desc']]
});
4. query 直接执⾏sql语句,为了防⽌sql注⼊,采⽤这种每个?匹配⼀个元素的⽅式
let users = await sql.query('select * from users where id > ? and state <> ? and phone is not null', [100, 0]);
5. insert 插⼊数据
let res = await sql.insert('users', {
name: 'egg',
phone: 'xxxxxx'
});
let id = res.insertId; // 得到新插⼊的数据主键
6. update 更新数据
// 更新id=1的⽤户信息let res = await sql.update('users', {
name: 'egg',
phone: 'xxxxxx'
}, {
id: 1,
});
7. delete 删除数据
let res = await sql.delete('users', {
id: 1,
});

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。