Gatsby和GraphQL-如何在查询中筛选数组
我开始使用Gatsby和GraphQL返回一个查询,其中列出了属于特定类别的所有库。在本例中,该类别称为“生活方式”。这一切都很成功,我得到了一个包含该类别中所有图库的数组。我还需要根据名为“日期”的子字段对该数组进行排序。这可以通过GraphQL查询本身实现吗?我尝试将Gatsby和GraphQL-如何在查询中筛选数组,graphql,contentful,gatsby,Graphql,Contentful,Gatsby,我开始使用Gatsby和GraphQL返回一个查询,其中列出了属于特定类别的所有库。在本例中,该类别称为“生活方式”。这一切都很成功,我得到了一个包含该类别中所有图库的数组。我还需要根据名为“日期”的子字段对该数组进行排序。这可以通过GraphQL查询本身实现吗?我尝试将(sort:{fields:[date],order:DESC})添加到gallery字段,但没有成功 有没有关于如何实现这一点的想法,或者这是否是GraphQL能够让我达到我所需要的程度的最接近的想法 提前感谢您的帮助。我仍在
(sort:{fields:[date],order:DESC})
添加到gallery字段,但没有成功
有没有关于如何实现这一点的想法,或者这是否是GraphQL能够让我达到我所需要的程度的最接近的想法
提前感谢您的帮助。我仍在努力让我的脑袋绕着GraphQL转
瑞安
能否提供有关您的内容模型的更多详细信息
- 如果你在contentful中使用一个“Reference”字段,很遗憾,据我所知,到目前为止,这个插件还不可能
- 如果使用“短文本,列表”字段,如默认示例中的标记
{
allContentfulPost(filter:{tags:{eq:"fantasy"}}, sort:{fields:[date], order:DESC}) {
edges {
node {
title {
childMarkdownRemark {
html
}
}
slug
date
}
}
}
}
它将为您提供以下结果:
{
"data": {
"allContentfulPost": {
"edges": [
{
"node": {
"title": {
"childMarkdownRemark": {
"html": "<p>Disney Movie</p>"
}
},
"slug": "down-the-rabbit-hole",
"date": "2017-11-26"
}
},
{
"node": {
"title": {
"childMarkdownRemark": {
"html": "<p>Old book</p>"
}
},
"slug": "down-the-rabbit-hole-2",
"date": "1865-11-26"
}
}
]
}
}
}
{
“数据”:{
“allContentfulPost”:{
“边缘”:[
{
“节点”:{
“标题”:{
“ChildMarkdown备注”:{
“html”:“迪士尼电影”
}
},
“鼻涕虫”:“兔子洞下”,
“日期”:“2017-11-26”
}
},
{
“节点”:{
“标题”:{
“ChildMarkdown备注”:{
“html”:“旧书”
}
},
“slug”:“地下兔子洞-2”,
“日期”:“1865-11-26”
}
}
]
}
}
}
当我试图从Contentful中使用的分类标签中对帖子进行排序时,我遇到了同样的问题。正如@chmac所说,您可以使用Javascript对GraphQL中的数据进行排序
我不得不寻找一个好的例子,但我最终在《盖茨比入门》中找到了一个:
Github:
实例:
您可以在源文件中看到,他们使用moment
()和lodash
将数据排序为一个名为posts
的新常量。在我的个人示例中,我必须调整常量,如下所示:
const courses = orderBy(
this.props.data.contentfulCategory.course,
// eslint-disable-next-line
[object => new moment(object.createdAt)],
['desc']
)
然后我在组件返回中使用了一个映射函数,如下所示:
{/* Courses */}
{courses.map(course => (
<div className="hero__profile" key={course.id}>
<h2>{course.title}</h2>
</div>
))}
{/*课程*/}
{courses.map(courses=>(
{课程名称}
))}
我希望这有帮助 好的。是的,我当前的内容模型有两种类型:图库和类别。我使用Gallery内容类型中的引用字段将其与给定类别关联。因为它在这个项目中还处于早期阶段,我可以根据您的示例切换到使用常规文本字段,并给出一个快照。似乎引用字段应该是“正确”的方法,但如果它是
gatsby source contentful
插件的一个限制,就可以了。只要我按照正确的顺序得到所需的数据,我就会很高兴。意识到你可能已经解决了这个问题,但是你也可以考虑从JavaScript中从GealQL获取数据之后进行排序。它并不总是正确的方法,但在某些情况下可能有用。Lodash/下划线有\uu.sortBy()
函数,使其非常简单。