You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于ExpressJS/MySQL/Prisma实现数据库实体变更记录方案咨询

寻求NextJS/Express/Prisma栈下的数据库变更记录方案

我现在需要给项目里指定的数据库实体实现变更记录功能——得在数据库表中记录部分表的新增、修改、删除操作,同时还要能追踪执行这些操作的用户。

当前我的技术栈是NextJS搭配自定义ExpressJS服务器,数据库用MySQL,ORM工具选的是Prisma。我考虑过编写ExpressJS中间件来实现这个功能,但暂时还摸不清具体的实现思路,另外也想知道有没有现成可用的库能直接满足需求。

之前我主要做PHP Symfony开发,当时用StofDoctrineExtensionsBundle实现这个变更记录需求效果很好,但现在项目是纯TypeScript技术栈(Express/NextJS/React/Prisma/MySQL),所以希望能获取适配这个技术栈的相关建议。


补充说明:现有Symfony API的变更记录表结构

目前还有一个在Symfony上运行、后续将迁移到Express/NextJS的API,它用于记录变更的表结构示例如下:

{ 
  "id": 59807, 
  "user": "ccba6ad2-0ae8-11ec-813f-0242c0a84005", 
  "patient": "84c3ef66-548a-11ea-8425-0242ac140002", 
  "action": "update", 
  "logged_at": "2021-11-02 17:55:09", 
  "object_id": "84c3ef66-548a-11ea-8425-0242ac140002", 
  "object_class": "App\Entity\Patient", 
  "version": 5, 
  "data": "a:2:{s:10:\"birth_name\";s:2:\"--\";s:10:\"profession\";s:2:\"--\";}", 
  "username": "johndoe", 
  "object_name": "patient", 
  "description": null 
}

数据库字段说明:

  • user:关联至用户表
  • patient:关联至患者表
  • action:取值可为create/update/delete
  • logged_at:变更发生的日期时间
  • object_id:发生变更的实体行ID
  • object_class:被更新的实体类
  • version:该对象被修改的次数
  • data:修改过程中变更的所有数据
  • username:执行操作的登录用户的用户名
  • object_name:用于标识被修改对象的字符串,无需使用object_class的命名空间
  • description:可在特定变更(通常为delete操作)时更新的值,用于保留被删除内容的痕迹

内容的提问来源于stack exchange,提问作者Gulivert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 10:04:10