sanity - React 中的理智:我如何获取与一个项目相关的许多学生???(许多作者到 1 块)
问题描述
我正在使用 Sanity 在 React 中开发一个投资组合网站。这两个组件对象是学生和项目。在主页上,我可以单击指向特定项目的链接,这会路由到显示单个项目的另一个页面。此外,在这个单一页面上,我想展示所有参与过这个项目的学生。通过 sanity studio,我创建了必要的关系。
但是,无论我单击哪个项目,它都会显示所有学生,无论他们是否相关。我怀疑我在我的 Sanity.fetch 中做错了什么。这是来自我的 SingleProject 组件,我想要关于项目和相关学生的数据(一对多)
.fetch(
`*[slug.current == "${slug}"] {
title,
_id,
slug,
mainImage{
asset->{
_id,
url
}
},
body,
description,
tags,
"students": *[_type == "student" && project._ref in *[_type=="project" && title == title ]._id ]{
name,
mainImage{
asset->{
id,
url
}
},
"slug": slug.current,
}
}`
这是来自我的项目模式,它引用了学生模式中的学生。
导出默认{名称:'项目',标题:'项目',类型:'文档',字段:[ {标题:'学生',名称:'学生',类型:'数组',:[ {类型:'参考', to: [{ type: 'student' }], }, ], },
我不知道为什么它会获取项目组件中的每个学生。有人可以帮忙吗?
解决方案
经过长时间的研究,我找到了答案。
useEffect(() => {
sanityClient
.fetch(
`*[slug.current == "${slug}"] {
title,
_id,
slug,
mainImage{
asset->{
_id,
url
}
},
body,
description,
tags,
"projects": *[_type=='project' && references(^._id)]{
title,
mainImage{
asset->{
id,
url
}
}
},
"slug": slug.current
}`
)
.then((data) => setSingleStudent(data[0]))
.catch(console.error);
}, [slug]);`enter code here`
推荐阅读
- react-native - ReactNative WebView 不在网络上呈现,但在 Android 上运行良好
- android - 返回单身
在 Android Room 中的 @Insert 上不起作用 - php - PHP数据排序
- github - 如何在 GitHub 上设置自定义扩展到语言的映射而不向 Linguist 添加新语言
- reactjs - 代理错误:无法将请求/付款从 localhost:3000 代理到 https://localhost:5000/
- java - 如何在 java 中纠正这个 For Each 循环(最终测试的输出不正确)?
- java - 列表
泛型 Java - java - 构造函数类:使用构造函数类中的其他变量设置变量(Java)
- java - 在 JWT 身份验证设置中处理刷新令牌的最可扩展/最安全的方法是什么?
- angular - 如何在不突出阿拉斯加的情况下使用 Highcharts 突出美国?