我正在尝试在我当前的项目中使用Contentful,并且我正在尝试了解如何根据链接对象中的字段过滤我的查询结果。
我的顶级对象包含一个定义如下的链接:
"name": "Service_Description",
"fields": [
{
"name": "Header",
"id": "header",
"type": "Link",
"linkType": "Entry",
"required": true,
"validations": [
{
"linkContentType": [
"offerGeneral"
]
}
],
"localized": false,
"disabled": false,
"omitted": false
},
此“标题”字段链接到具有此定义的其他内容类型:
"fields": [
{
"name": "General",
"id": "general",
"type": "Link",
"linkType": "Entry",
"required": true,
"validations": [
{
"linkContentType": [
"genericGeneral"
]
}
],
"localized": false,
"disabled": false,
"omitted": false
},
然后链接到最低级别:
"fields": [{
"name": "TagList",
"id": "tagList",
"type": "Array",
"items": {
"type": "Link",
"linkType": "Entry",
"validations": [
{
"linkContentType": [
"tag"
]
}
]
},
"validations": []
}
其中tagList是这段内容可能具有的标签数组。
我希望能够从顶级对象运行一个查询,该查询说明了这些“Service_Description”内容条目的X号,其中包含来自提供的标记列表的标记。
在PostMan中,我一直在运行:
https://cdn.contentful.com/spaces/{SPACE_ID}/entries?access_token={ACCESS_TOKEN}&content_type=serviceDescription&include=3
我正在尝试添加类似的过滤器:
fields.header.fields.general.fields.tagList.sys.id%5Bin%5D={TAG_SYS_ID}
这显然是不正确的,但我一直在努力如何走这条关系来实现我的目标。仔细阅读文档这似乎与包含有关,但我不确定如何纠正这个问题。
关于如何实现目标的任何方向或是否可能?
答案 0 :(得分:3)
不幸的是,您目前无法在Contentful中提出要求。
我们在嵌套/引用的内容类型方面面临着一个非常类似的问题,支持人员表示这是不可能的。
我们最终写了一个非常复杂的系统,让我们可以做你想做的事。基本上对引用的内容进行全文搜索,然后查询所有父条目。然后,我们通过迭代父母来找到关系来匹配关系。
抱歉,这不容易。希望开发人员能够改进这种复杂功能。我们引起了他们的注意。
答案 1 :(得分:3)
现在这是可能的,我相信可以根据对此功能的请求在API中解决此问题。您可以看到线程here。
要点在于,您必须查询具有链接条目的条目,然后在查询中包括这些链接条目的contentType,如下所示:
contentfulClient.getEntries({
'content_type': 'location',
'fields.market.fields.marketName': 'New York',
'fields.market.sys.contentType.sys.id': 'marketRegion'
})