Sanity CMS,使用类型 "object" 作为参考

Sanity CMS, using type "object" as reference

难道不能理智地使用对象类型作为参考吗?例如,这是行不通的。当我去现场时,什么也没有出现。如果我不能这样做,我如何访问在其他文档下创建的 indexPage 对象?

export const indexPage = {
  title: "Index Page",
  name: "indexPage",
  type: "object",
  fields: [
    {
      title: "Subheading",
      name: "subheading",
      type: "array",
      of: [{ type: 'block' }] 
    },
    {
      title: "Content",
      name: "content",
      type: "array",
      of: [{ type: "block" }]
    },
  ]
}

// in another file

export const coolPage = {
  title: "Cool Page",
  name: "coolPage",
  type: "object",
  fields: [
    {
      title: "Reference Index Page",
      name: "refIndexPage",
      type: "reference",
      to: [{ type: 'indexPage' }] 
    }
  ]
}

引用只能指向其他文档;不是针对文档的特定 部分 。因此,要实现这一点,indexPage 需要成为一个文档。

我认为将 indexPage 建模为文档对于您的情况是一个可行的选择。您提到“已在其他文档下创建的 indexPage 对象”。 indexPage 不是在特定文档中创建数据,而是 indexPage 应该是它自己的文档类型。然后任何其他文档都可以通过引用连接到它。这种方法对您来说应该非常灵活。

Sanity Studio 最近添加了对“就地引用”的支持,这使得该工作流程更加完善。现在,Studio 允许您创建一个文档来引用 ,同时 您正在编辑引用它的文档,而无需离开编辑器。您可以 see a demo here(这里不需要您做额外的工作,它由 Sanity Studio 自动处理)。

总而言之:如果您想在多个文档之间共享一段数据,请将其建模为自己的文档类型,供每个相关文档引用。