【发布时间】:2022-01-21 13:54:51
【问题描述】:
我正在寻找一种方法来保存某些实体的数据库实体更改。我的意思是我需要在数据库表中保存对某些表所做的所有更改(添加、修改/删除),并能够跟踪进行更改的用户。
如果我使用 Prisma 作为 ORM,我正在使用自定义 ExpressJS 服务器和 MYSQL 数据库开发 NextJS。我认为也许可以编写一个 ExpressJS 中间件,但我还不知道该怎么做,并问自己是否已经存在任何库。
通常我在 PHP Symfony 上工作,并习惯于管理这个 StofDoctrineExtensionsBundle,它很棒并且可以按预期工作。但我目前的项目是一个 Typescript 项目,只有 Express/NextJS/React/Prisma/MYSQL。
非常感谢您对知识的任何反馈。
提前致谢。
问候,
格利弗特
编辑:我当前的 API 必须移动到 Express/NextJS 仍然在 Symfony 上运行,记录所有更改的表如下所示:
{
"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 => 与用户表的关系
- 患者 => 与患者表的关系
- action => 可以是“创建”/“更新”/删除”
- logged_at => 更改完成的日期时间
- object_id => 实体发生变化的实体行 ID
- object_class=> 实体已更新
- 版本 => 对象更改了多少次
- 数据 => 修改期间所有数据都发生了变化
- 用户名 => 登录用户的用户名进行了更改
- object_name => 一个字符串,用于标识修改后的对象
- 使用 object_class 的命名空间
- description => 一个可以在某些特定更改上更新的值 * 通常在操作 delete 以跟踪例如删除的内容
【问题讨论】:
标签: mysql express middleware prisma