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

在Hygraph CMS与Expo中发布图片遇问题求助

解决Hygraph中创建Review时关联图片仅处于草稿状态的问题

你的问题核心有两个关键点:

  1. mutation中的查询字段误用:你当前使用的publishManyReviewsConnection和publishManyAssetsConnection是查询类型字段,并非执行发布操作的mutation。它们只会返回已发布内容的连接数据,不会触发任何发布动作。你的Review能被发布,大概率是因为在Hygraph Schema设置中,Review类型的create操作被配置为自动发布,而Asset类型没有开启这个设置。

  2. Asset未被主动发布:通过userImage: { create: { uploadUrl: $uploadUrl } }创建的Asset默认处于草稿状态,需要手动调用发布mutation才能转为已发布状态。

解决方案一:开启Asset的自动发布(最简单)

进入Hygraph后台的Schema编辑器:

  • 找到Asset类型,点击进入编辑界面
  • 切换到Mutations标签页,找到createAsset mutation
  • 勾选Auto Publish选项,保存更改

之后通过createReview创建关联Asset时,Asset会自动发布,无需额外操作。

解决方案二:手动分步发布(更灵活,适合需要控制发布时机的场景)

如果不想开启自动发布,可以通过两步mutation完成创建+发布:

第一步:创建Review并获取关联Asset的ID

mutation CreateReviewDraft(
    $businessId: ID!
    $userId: String!
    $uploadUrl: String!
    $userName: String!
    $rating: Int!
    $comment: String!
) {
    createReview(
        data: {
            business: { connect: { id: $businessId } }
            userId: $userId
            userName: $userName
            userImage: { create: { uploadUrl: $uploadUrl } }
            rating: $rating
            comment: $comment
        }
    ) {
        id
        userImage {
            id  # 获取刚创建的Asset的ID
        }
    }
}

第二步:发布Review和对应的Asset

mutation PublishReviewAndAsset(
    $reviewId: ID!
    $assetId: ID!
) {
    publishReview(where: { id: $reviewId }) {
        id
    }
    publishAsset(where: { id: $assetId }) {
        id
    }
}

在Apollo Client中,你可以通过链式调用这两个mutation:先执行创建草稿的mutation,拿到reviewId和assetId后,再执行发布mutation。

注意事项

  • 如果你之前误以为publishManyReviewsConnection在执行发布,需要替换为真正的发布mutation(publishReview或publishManyReviews,后者需要指定筛选条件)
  • 确保你的API密钥拥有发布Asset的权限,否则会出现权限错误

内容的提问来源于stack exchange,提问作者Umar Milanzi Snr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:37:20