在egg中,可以使用mysql的LIKE
关键字进行模糊查询,SELECT * FROM table WHERE column LIKE '%keyword%'
。
在Egg.js中,我们可以使用Sequelize库来操作MySQL数据库,以下是如何在Egg.js中使用Sequelize进行模糊查询的详细步骤:
1、安装Sequelize和mysql2模块
我们需要安装Sequelize和mysql2模块,在项目根目录下运行以下命令:
npm install sequelize mysql2 save
2、配置数据库连接
在config/config.default.js
文件中,配置数据库连接信息:
exports.sequelize = { client: 'mysql', connection: { host: '127.0.0.1', port: '3306', user: 'root', password: 'your_password', database: 'your_database' }, pool: { max: 5, min: 0, acquire: 30000, idle: 10000 } };
3、创建模型
在项目中创建一个名为app/model
的文件夹,然后在该文件夹中创建一个名为user.js
的文件,用于定义用户模型:
// app/model/user.js const Sequelize = require('sequelize'); const sequelize = require('../config/config').sequelize; const User = sequelize.define('user', { id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true }, name: Sequelize.STRING, email: Sequelize.STRING, age: Sequelize.INTEGER }, { tableName: 'users' }); module.exports = User;
4、进行模糊查询
在需要执行模糊查询的地方,引入User模型并执行查询,在app/controller/user.js
文件中,我们可以编写一个根据用户名模糊查询用户的控制器:
// app/controller/user.js
const Controller = require('egg').Controller;
const User = require('../model/user');
class UserController extends Controller {
async search() {
const { ctx } = this;
const keyword = ctx.query.keyword || ''; // 获取查询参数中的关键字,如果没有则默认为空字符串
const users = await User.findAll({ // 使用Sequelize的findAll方法进行模糊查询,其中包含一个where对象,用于指定查询条件
where: {
name: { [Sequelize.Op.like]: %${keyword}%
} // 使用Sequelize的Op对象的like方法进行模糊匹配,将关键字用百分号包围,表示任意字符出现任意次数
}
});
ctx.body = users; // 返回查询结果
}
}
module.exports = UserController;
5、测试模糊查询功能
启动项目后,访问http://localhost:7001/api/user/search?keyword=张
,将会返回所有名字中包含“张”的用户信息。
还没有评论,来说两句吧...