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

Fauna GraphQL执行mutation报ArtworkEntryImageRelation无src字段错误

报错原因

Fauna GraphQL 对对象类型字段的默认处理逻辑是将其映射为独立集合的文档关联,而非嵌入式对象。你当前Schema中ArtworkEntry的image字段没有额外指令修饰时,Fauna会自动为其生成ArtworkEntryImageRelation关联类型,该类型仅支持传入关联文档的ID标识,不接受src/alt这类Image本体的属性字段,因此触发报错。
额外注意:你原有mutation的返回值部分直接写image也不符合GraphQL规范,对象类型需要明确指定要返回的子字段。

解决方案

根据你对Image数据的存储需求二选一即可:

  • 方案一:将Image作为嵌套字段直接存入ArtworkEntry文档(不单独建Image集合,适合图片仅属于单个商品、不需要复用的场景)
    给image字段添加@embedded指令,修改后的Schema如下:
    type Image {
      src: String!
      alt: String!
    }
    
    type ArtworkEntry {
      name: String!
      category: String!
      price: Int!
      currency: String!
      image: Image @embedded
    }
    
    重新上传Schema后,原有mutation只需调整返回字段部分即可正常运行,修改后mutation参考:
    mutation CreateArtworkEntry {
      createArtworkEntry(data: {
        name: "DDD"
        category: "DDD"
        price: 101
        currency: "USD"
        image: {
          src: "https://www.pexels.com/photo/26938/"
          alt: "商品展示图"
        }
      }) {
        name
        category
        price
        currency
        image {
          src
          alt
        }
      }
    }
    
  • 方案二:将Image作为独立集合存储(适合图片可被多个商品复用的场景)
    这种场景下不能在创建ArtworkEntry时直接写入Image的属性,需要分两步操作:
    1. 先调用mutation创建独立的Image文档,拿到返回的文档_id
    mutation CreateImage {
      createImage(data: {
        src: "https://www.pexels.com/photo/26938/"
        alt: "商品展示图"
      }) {
        _id
      }
    }
    
    1. 创建ArtworkEntry时,通过connect字段关联上一步拿到的Image文档ID
    mutation CreateArtworkEntry {
      createArtworkEntry(data: {
        name: "DDD"
        category: "DDD"
        price: 101
        currency: "USD"
        image: {
          connect: "替换为上一步返回的Image文档_id"
        }
      }) {
        name
        category
        price
        currency
        image {
          src
          alt
        }
      }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:27:17