当前位置: 首页 > news >正文

AdminJS - 集成 MySQL 的现代化管理面板开发指南

AdminJS - 集成 MySQL 的现代化管理面板开发指南

MySQL 集成配置

首先需要安装必要的依赖:

npm install adminjs @adminjs/express express
npm install @adminjs/sequelize sequelize mysql2

基础配置示例

const AdminJS = require('adminjs')
const AdminJSExpress = require('@adminjs/express')
const AdminJSSequelize = require('@adminjs/sequelize')
const { Sequelize } = require('sequelize')// 注册 Sequelize 适配器
AdminJS.registerAdapter(AdminJSSequelize)// 配置数据库连接
const sequelize = new Sequelize('database', 'username', 'password', {host: 'localhost',dialect: 'mysql',port: 3306
})// 定义模型示例
const User = sequelize.define('User', {name: {type: Sequelize.STRING,allowNull: false,},email: {type: Sequelize.STRING,allowNull: false,},status: {type: Sequelize.ENUM(['active', 'inactive']),defaultValue: 'active',}
})// AdminJS 配置
const adminJs = new AdminJS({databases: [sequelize],rootPath: '/admin',resources: [{resource: User,options: {// 自定义属性显示properties: {createdAt: {isVisible: { list: true, filter: true, show: true, edit: false }}},// 自定义操作actions: {// 可以添加自定义操作}}}]
})

高级配置示例

// 添加自定义验证和格式化
const adminJsConfig = {resources: [{resource: User,options: {properties: {email: {isRequired: true,// 添加自定义验证custom: {isEmail: true}},status: {availableValues: [{ value: 'active', label: '活跃' },{ value: 'inactive', label: '停用' }]}},// 自定义列表显示listProperties: ['id', 'name', 'email', 'status', 'createdAt'],// 自定义过滤选项filterProperties: ['name', 'email', 'status', 'createdAt'],// 自定义编辑字段editProperties: ['name', 'email', 'status']}}]
}

常用操作示例

1. 查询数据

// 自定义列表操作
const customListAction = {actionType: 'list',handler: async (request, response, context) => {const users = await User.findAll({where: {status: 'active'}});return {records: users}}
}

2. 数据验证

// 添加自定义验证规则
const userValidation = {before: async (request, context) => {const { email } = request.payload;const existingUser = await User.findOne({ where: { email } });if (existingUser) {throw new Error('邮箱已存在');}return request;}
}

实用功能

  1. 批量操作

    • 支持批量删除
    • 支持批量更新状态
    • 自定义批量操作
  2. 数据导出

    • CSV 导出
    • Excel 导出
    • 自定义导出格式
  3. 文件上传

    • 图片上传
    • 文件管理
    • 支持多种存储方式

性能优化建议

  1. 合理使用索引
  2. 配置连接池
  3. 使用适当的查询缓存
  4. 分页加载数据

安全建议

const adminJsOptions = {// 配置认证authenticate: async (email, password) => {// 实现您的认证逻辑const user = await User.findOne({ where: { email } });if (user && validatePassword(password, user.password)) {return user;}return false;},// 配置权限cookiePassword: 'your-secure-password-here'
}

总结

通过 AdminJS 和 MySQL 的集成,我们可以快速构建一个功能完整的管理后台系统。它不仅提供了基础的 CRUD 操作,还支持复杂的业务逻辑实现和界面定制,是开发管理系统的理想选择。

http://www.lryc.cn/news/505662.html

相关文章:

  • 上传文件(vue3)
  • 【Win10 环境vscode配置boost】
  • 中间件 redis安装
  • [java] 简单的熔断器scala语言案例
  • 【java】序列化的种类和使用场景
  • Qt5与Qt6中的高DPI缩放属性解析
  • Mac使用总结
  • 【日期规则】EXCEl 自定义日期匹配规则,学习基础知识,自由匹配场景
  • 苹果电脑可以安装windows操作系统吗?Mac OS X/OS X/macOS傻傻分不清?macOS系统的Java支持?什么是macOS的五大API法王?
  • 芋道SpringBoot配置Maven、创建SpringBoot项目、创建Web接口、读取配置信息
  • 物理机内网穿透
  • Vue 3: 通过图片链接获取图片颜色,间接设置背景颜色
  • opencv-python的简单练习
  • 如何使用生成式AI实现跨领域内容生成
  • 【Linux】socket编程1
  • Linux文件属性 --- 七种文件类型---文件.目录、软硬链接、字符设备文件
  • Tree-of-Counterfactual Prompting for Zero-Shot Stance Detection
  • NextJs 路由管理
  • hive 小文件分析
  • 【JavaWeb后端学习笔记】WebSocket通信
  • 搭建springmvc项目
  • Springboot3.x配置类(Configuration)和单元测试
  • java后端环境配置
  • 手眼标定工具操作文档
  • WebGIS城市停水及影响范围可视化实践
  • 无管理员权限 LCU auth-token、port 获取(全网首发 go)
  • 【数字花园】数字花园(个人网站、博客)搭建经历教程
  • python模拟练习第一期
  • Xcode
  • RabbitMQ安装延迟消息插件(mq报错)