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

Mat*_*ath 1 javascript node.js contentful

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

contentfulClient.getEntries({
    content_type: 'homePage'
})
Run Code Online (Sandbox Code Playgroud)

它获取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"
        }
    },
Run Code Online (Sandbox Code Playgroud)

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

contentfulClient.getEntry('1234567890')
Run Code Online (Sandbox Code Playgroud)

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

"subField": {
            "sys": {
                "type": "Link",
                "linkType": "Entry",
                "id": "#######"
            }
        },
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*ban 6

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

contentfulClient.getEntries({
   content_type: 'homePage',
   sys.id: '1234567890'
})
Run Code Online (Sandbox Code Playgroud)

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