如何在内容查询中检索链接字段

How to retrieve linked fields in Contentful query

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

contentfulClient.getEntries({
    content_type: '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 一样?

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

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

这也会产生一个请求,而不是多个请求,就像您在使用 GetEntry 方法然后手动解析每个引用的内容项时最终会得到的那样。