Sanity CMS字段重命名后前端获取返回undefined排查求助
问题排查与解决
你遗漏的关键操作集中在旧文档数据同步和缓存验证环节,具体如下:
1. 更新Sanity Studio中已发布的旧文档
重命名Schema字段后,之前发布的文章仍保留旧字段h1的数据,不会自动映射到新字段maintitle。你需要:
- 打开本地Sanity Studio(默认地址
http://localhost:3333) - 找到所有已发布的文章文档,逐个打开后重新点击发布按钮
- 操作后Sanity会将旧字段
h1的值同步到新字段maintitle中(新手手动操作更稳妥,批量迁移可后续学习Sanity CLI脚本)
2. 确认GROQ查询是否包含新字段
尽管你更新了fetch语句,仍需确保GROQ查询里明确指定了maintitle。示例正确查询:
*[_type == "article" && slug.current == $slug][0]{ title, slug, maintitle, // 需明确包含该字段,或用`...`获取全部字段 // 其他业务字段 }
如果用...获取全部字段,需重启Sanity服务器让Schema更新生效,否则查询可能无法返回新字段。
3. 清除本地缓存
- 重启Sanity Studio本地服务器(停止
npm run dev后重新启动) - 重启网站项目的开发服务器
- 若为Next.js项目,删除
.next文件夹清除静态缓存后重新构建
完成以上操作后,article.maintitle即可正常获取数据。
内容的提问来源于stack exchange,提问作者Alex Carliner
相关产品推荐
相关产品推荐

