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

Amplify DataStore如何配置删除Grouprequest时不级联删除关联Group

问题场景

当前定义的GraphQL Schema如下:

type Grouprequest
  @model
  @auth(rules: [{ allow: private }, { allow: public, provider: apiKey }]) {
  groupId: ID!
  group: Group @hasOne(fields: ["groupId"])
}

执行以下代码删除Grouprequest实例时,关联的Group数据会被自动级联删除:

DataStore.delete(Grouprequest, requestId)

目标:配置Amplify,实现删除Grouprequest记录时,不自动级联删除关联的Group数据。

实现方案

完全可以通过Schema配置实现,无需修改业务层的删除逻辑。
Amplify DataStore 对@hasOne、@hasMany类型的关联关系默认开启级联删除,删除记录时会自动清理所有关联数据,只要在关联指令上显式关闭级联删除开关即可。

  • 修改GraphQL Schema,给@hasOne指令传入cascadesOnDelete: false参数:
type Grouprequest
  @model
  @auth(rules: [{ allow: private }, { allow: public, provider: apiKey }]) {
  groupId: ID!
  group: Group @hasOne(fields: ["groupId"], cascadesOnDelete: false)
}
  • 保存Schema后执行推送命令,将配置同步到云端:
amplify push

执行过程中如果弹出Schema变更确认提示,核对变更内容无误后确认执行即可。

  • 端侧缓存清理:
    本地DataStore会持久化缓存旧的关联规则,云端配置生效后,需要在客户端清理一次本地缓存,避免旧规则导致非预期删除:
// 清除本地持久化存储的缓存数据
await DataStore.clear()
// 重新启动数据同步,拉取最新云端数据
await DataStore.start()

注意事项

  • 如果你的Group类型中配置了指向Grouprequest的反向关联(比如@belongsTo字段),需要同步检查反向关联的级联配置,避免反向操作触发非预期的数据删除。
  • 配置生效后,删除Grouprequest记录时只会删除当前表的对应条目,Group表中匹配groupId的记录会完整保留,不会被连带删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:06:17