【问题标题】:Typeorm PrimaryGeneratedColumn is not readonlyTypeorm PrimaryGeneratedColumn 不是只读的
【发布时间】:2020-04-22 07:33:19
【问题描述】:

问题:

装饰 @PrimaryGeneratedColumn() 的实体 id 可在 put 请求上覆盖。

预期行为:

@PrimaryGeneratedColumn()装饰的id不会更新。

重现步骤:

  1. 使用此帖子请求创建一个条目:
curl --location --request POST 'https://q6zre.sse.codesandbox.io/tests' \
--header 'Content-Type: application/json' \
--data-raw '{"name": "acme"}'
  1. 从响应中复制id,添加到put请求的url中,并在body中添加一个随机的wishedId
curl --location --request PUT 'https://q6zre.sse.codesandbox.io/tests/{id}' \
--header 'Content-Type: application/json' \
--data-raw '{"id": "{wishedId}"}'

条目更新为wishedId

工作示例:https://codesandbox.io/s/github/desirelabs/nest-typeorm

有什么办法可以防止这种情况发生吗? 谢谢

【问题讨论】:

    标签: nestjs typeorm


    【解决方案1】:

    我会说这与其说是 TypeORM 问题,不如说是架构问题。您应该考虑将Anti-corruption LayerDDD: Anti-corruption Layer 等添加到您的架构中。该模式来自领域驱动设计,其基本思想是您的 REST 层不应直接受数据库层的影响,并且应该在两者之间进行映射以帮助执行业务需求。您正在使用 TypeORM 进行映射,我建议您应该编写自己的映射来保护您的数据完整性免受外界影响。

    【讨论】:

      猜你喜欢
      • 2022-07-21
      • 2018-07-21
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      相关资源
      最近更新 更多