基于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/deletelogged_at:变更发生的日期时间object_id:发生变更的实体行IDobject_class:被更新的实体类version:该对象被修改的次数data:修改过程中变更的所有数据username:执行操作的登录用户的用户名object_name:用于标识被修改对象的字符串,无需使用object_class的命名空间description:可在特定变更(通常为delete操作)时更新的值,用于保留被删除内容的痕迹
内容的提问来源于stack exchange,提问作者Gulivert
相关产品推荐
相关产品推荐

