如何在Contentful查询中检索链接的字段

时间:2017-03-13 17:21:34

标签: javascript node.js contentful

我正在使用Contentful,并且拥有一个使用一系列相关字段的内容模型。我使用JS api在NodeJS中查询我的内容。如果我调用get条目,就像这样

contentfulClient.getEntries({
    content_type: 'homePage'
})

它获取homePage类型的所有内容,并包含每个相关字段的实际字段数据,如此

"subField": {
        "sys": {
            "space": {
                "sys": {
                    "type": "Link",
                    "linkType": "Space",
                    "id": "#######"
                }
            },
            "id": "#######",
            "type": "Entry",
            "createdAt": "2017-03-10T15:58:25.697Z",
            "updatedAt": "2017-03-10T15:58:25.697Z",
            "revision": 1,
            "contentType": {
                "sys": {
                    "type": "Link",
                    "linkType": "ContentType",
                    "id": "homeSubField"
                }
            },
            "locale": "en-GB"
        },
        "fields": {
            "category": {
                "sys": {
                    "type": "Link",
                    "linkType": "Entry",
                    "id": "#######"
                }
            },
            "subFieldContent": "Some field content"
        }
    },

但是,如果我使用ID调用特定条目,例如

contentfulClient.getEntry('1234567890')

然后,每个链接的字段仅作为具有ID的引用返回,如

"subField": {
            "sys": {
                "type": "Link",
                "linkType": "Entry",
                "id": "#######"
            }
        },

如何在调用 getEntry 时获取全文,就像我使用 getEntries 一样?

1 个答案:

答案 0 :(得分:6)

不幸的是,当直接通过id获取内容项时,Contentful不包含引用的内容。解决此问题的一种方法是使用getEntries方法,但按sys.id进行过滤。这样你就会得到相同的条目,虽然在一个数组中,但它也会包含引用的内容。

contentfulClient.getEntries({
   content_type: 'homePage',
   sys.id: '1234567890'
})

这也会导致单个请求而不是多个请求,因为您在使用GetEntry方法时最终会手动解析每个引用的内容项。