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

使用Sanity.io遇未定义字段错误,无法获取Google登录用户信息

解决Sanity.io中Encountered a field that is not defined in the schema错误

问题分析

你遇到的错误是因为GROQ查询中请求的userName和image字段,在Sanity的user类型Schema里未定义(或定义后未部署到云端),导致查询无法获取对应数据,进而用户头像和名称加载失败。

解决步骤

1. 检查并完善user Schema

找到本地Sanity项目中schemas目录下的user.js(或对应user类型的schema文件),确保其中包含userName和image字段的定义,示例代码如下:

export default {
  name: 'user',
  title: 'User',
  type: 'document',
  fields: [
    {
      name: 'userName',
      title: 'User Name',
      type: 'string',
    },
    {
      name: 'image',
      title: 'Profile Image',
      type: 'image',
      options: {
        hotspot: true // 支持头像裁剪定位
      }
    },
    // 保留其他已有的字段定义
  ]
}

2. 部署Schema到Sanity云端

在本地Sanity项目的根目录下,执行以下命令将更新后的Schema同步到线上数据库:

sanity deploy

执行完成后,云端的Schema会和本地保持一致,查询时就能识别userName和image字段。

3. 验证用户数据

通过Sanity Studio查看已创建的用户文档,确认userName和image字段是否有正确的数值(需确保Google登录流程中,已将返回的用户名和头像地址写入到Sanity数据库的对应字段中)。如果数据缺失,需要检查登录逻辑的写入环节。

补充说明

你的GROQ查询(如searchQuery、feedQuery中postedBy -> { _id, userName, image })明确请求了这两个字段,必须满足三个条件才能正常加载:Schema中存在对应定义、云端已部署该Schema、用户数据中存在这些字段的有效值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:55:41