过滤链接对象上的内容查询

时间:2016-06-22 23:58:34

标签: contentful

我正在尝试在我当前的项目中使用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}

这显然是不正确的,但我一直在努力如何走这条关系来实现我的目标。仔细阅读文档这似乎与包含有关,但我不确定如何纠正这个问题。

关于如何实现目标的任何方向或是否可能?

2 个答案:

答案 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'
})