在React理智:我怎么能获得许多学生相关的一个项目??(许多作者到1块)



我正在使用Sanity在React中创建一个投资组合网站。这两个组件对象是学生和项目。在主页上,我可以点击一个指向特定项目的链接,这将路由到显示单个项目的另一个页面。此外,在这个单一的页面上,我想展示所有参与这个项目的学生。使用sanity studio,我已经创建了必要的关系。

但是,无论我点击哪个项目,它都会显示所有的学生,无论他们是否相关。我怀疑我的理智出了什么问题。这是来自我的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,
}
}`

这是从我的项目模式引用学生模式的学生。

export default {名称:"项目",标题:"项目",类型:"文档",字段:[{标题:"学生",名称:"学生",类型:"数组",:【{类型:"引用",到:[{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`

最新更新