Egg 针对 MySQL 数据库提供了非常方便的多表查询操作。
首先需要使用 Egg 自带的 app.mysql
对象来获取到 MySQL 数据库操作对象:
const { app,} = require('egg'); const { Op,} = app.Sequelize; const sequelize = app.mysql.get('db1'); module.exports = async ctx => { const result = await sequelize.query(`SELECT * FROM user`,[]); ctx.body = { result,}; };
使用 sequelize.query()
函数可以直接执行 SQL 语句,并返回查询结果。同时,我们也可以使用 Sequelize 提供的 API 进行多表查询操作。
例如,我们有两张表,一张为 user
表,存储着用户信息;另一张为 order
表,存储着用户订单信息。这两张表可以通过用户 ID 字段进行关联查询。
以下是使用 Sequelize 进行多表查询的示例代码:
const { app,} = app.Sequelize; const sequelize = app.mysql.get('db1'); module.exports = async ctx => { const result = await sequelize.query(` SELECT user.*,order.* FROM user LEFT JOIN order ON user.id = order.user_id WHERE user.id = :id `,{ replacements: { id: 1,},type: sequelize.QueryTypes.SELECT,}); ctx.body = { result,}; };
以上代码使用了 LEFT JOIN
查询语句来关联查询两张表,并且使用了占位符的方式传递参数。
除了使用原生 SQL 语句之外,Sequelize 还提供了更加灵活便捷的查询 API,例如 findAll()
、findOne()
等方法,可以让我们更加方便地进行多表查询操作。
总之,Egg 可以方便地集成 MySQL 数据库,并且提供了多种多样的查询操作方式,使我们的开发效率和代码可读性大大提升。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。