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

Firebase DataConnect是否支持一对一嵌套插入?附操作示例

DataConnect一对一嵌套插入支持说明及正确实现方式

DataConnect支持一对一关联的嵌套插入,你的操作失败是因为schema定义和mutation语法存在问题,以下是具体修正方案:

问题根源

  1. Schema缺失必要配置:

    • 所有@table标注的类型必须定义主键字段(@id),这是DataConnect的强制要求,你原schema未设置主键。
    • 未通过@relation指令明确Product与LocalizedString的一对一关联关系,也没有定义外键字段存储关联关系。
  2. Mutation语法错误:
    嵌套插入的正确格式不是直接调用子表的_insert方法,而是通过关联字段的create嵌套对象传入子表数据。

修正后的Schema

type Product @table {
  id: ID @id @default(uuid()) # 主键字段,必填
  name: LocalizedString @relation(fields: [nameId], references: [id])
  nameId: ID # 外键字段,关联LocalizedString的主键
}

type LocalizedString @table {
  id: ID @id @default(uuid()) # 主键字段,必填
  enUS: String
  frFR: String
  product: Product? # 可选反向关联,按需添加
}

正确的嵌套插入Mutation

mutation CreateProduct {
  product_insert(
    data: { 
      name: {
        create: {
          enUS: "MyProduct"
          frFR: "MonProduit"
        }
      }
    }
  ) {
    id
    name {
      id
      enUS
      frFR
    }
  }
}

核心说明

  • 必须用@relation指令声明关联关系,同时定义外键字段(如nameId)来维护两张表的关联。
  • 嵌套插入时,通过关联字段名: { create: { ...子表数据 } }的格式,即可在一次操作中完成主表和子表的数据插入。
  • 若不修正schema和语法,确实需要分两次操作:先插入LocalizedString获取其ID,再插入Product并关联该ID,但通过正确配置可实现单次操作完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 02:48:12