我需要从Contentful条目ID中获取图片网址。 我从Contentful查询中获得了这样一个JSON
{
"sys":{
"space":{
"sys":{
"type":"Link",
"linkType":"Space",
"id":"8v1e7eaw70p2"
}
},
"id":"1JfEwVlD9WmYikE8kS8iCA",
"type":"Entry",
"createdAt":"2018-02-28T18:50:08.758Z",
"updatedAt":"2018-02-28T18:50:08.758Z",
"revision":1,
"contentType":{
"sys":{
"type":"Link",
"linkType":"ContentType",
"id":"image"
}
},
"locale":"en-US"
},
"fields":{
"name":"heat",
"image":{
"sys":{
"type":"Link",
"linkType":"Asset",
"id":"6Inruq2U0M2kOYsSAu8Ywk"
}
}
}
}
我正在使用他们提供的JS驱动程序:
client.getEntry()
那么如何通过该链接:6Inruq2U0M2kOYsSAu8Ywk?
答案 0 :(得分:1)
不幸的是,js SDK在使用单一条目端点时无法解析链接,即client.getEntry()
,因为没有足够的数据。
当我总是建议解决这个问题时,请使用带有查询的集合端点作为查询参数。这样,您将始终获得所需条目及其所有链接数据。 你的代码看起来应该是这样的
client.getEntries({'sys.id': '6Inruq2U0M2kOYsSAu8Ywk'})
.then(response => console.log(response.items[0].fields.image.fields.file.url))
我希望有所帮助。 最好, 物语
答案 1 :(得分:0)
使用client.getEntries({'sys.id': '1JfEwVlD9WmYikE8kS8iCA'})
获取输入字段和资产字段。
您还可以通过在获取数据后运行此资产来将资产修补到字段:
/* Patch all the assets to the fields */
const patchAssets = (fields, assets) => {
Object.keys(fields).forEach(function (key) {
let obj = fields[key];
if (obj.sys && obj.sys.linkType === 'Asset') {
const assetId = obj.sys.id;
const matchAsset = assets.find(asset => {
return asset.id === assetId;
});
obj.file = matchAsset;
}
});
return fields;
};
答案 2 :(得分:0)
获取图像URL的另一种方法是使用getAsset('<asset_id>')
。因此,首先,需要使用getEntry()
方法来获取条目数据,然后从以下字段中提取ID:fields.image.sys.id,并将其传递给getAsset
方法。>