如何通过Contentful API获取关联条目(Linked Entry)的名称?
获取Contentful关联条目名称的方法
要拿到关联条目(比如你提到的「Jennifer Test」)的名称,核心是让API返回关联数据——Contentful默认不会自动展开关联内容,你可以按以下步骤操作:
1. 修改请求URL,添加include参数
Contentful API支持用include参数指定要展开的关联层级(最大可设为10),如果是一级关联,设include=1即可。把你的请求代码改成这样:
let fetchRes = fetch("https://preview.contentful.com/spaces/{space_id}/environments/ca/entries/{entry_id}?access_token=vOKxCDyhU8gLUsU4FR5tgdwQVe3arwfJzFTCloi2sjM&content_type=HorizontalImageCard&include=1");
2. 从返回数据中提取关联条目名称
请求返回的JSON里会新增一个includes字段,里面包含所有关联的条目和资产。你需要:
- 从主条目中拿到关联对象的
sys.id - 去
includes.Entry(对应关联条目)或includes.Asset(对应关联资产)里匹配对应ID的内容 - 提取名称字段(字段名取决于你关联的内容类型定义,一般是
name或title)
举个实际处理的代码示例:
fetchRes.then(res => res.json()).then(data => { // 获取请求到的HorizontalImageCard条目 const cardEntry = data.items[0]; // 假设关联字段名为relatedItem,取出它的ID const linkedItemId = cardEntry.fields.relatedItem.sys.id; // 从includes中找到对应的关联条目 const linkedEntry = data.includes.Entry.find(item => item.sys.id === linkedItemId); // 提取名称(这里假设关联条目的名称字段是name) const linkedEntryName = linkedEntry.fields.name; console.log(linkedEntryName); // 输出Jennifer Test });
注意事项
- 如果关联是多层嵌套的(比如关联条目里还有其他关联),需要把
include设为对应层级(比如include=2) - 如果关联的是资产,要去
includes.Asset里查找,资产的名称一般存在fields.title字段 - 确认你关联的内容类型的名称字段实际键值,比如有的可能叫
displayName,以你Contentful后台的定义为准
内容的提问来源于stack exchange,提问作者Nag
相关产品推荐
相关产品推荐

