我需要从内容条目ID获取图像URL。我从内容查询中获得了这样的 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 ?
不幸的是,当使用单个条目端点时,js SDK 将无法解析链接,即client.getEntry()
因为没有足够的数据。
当我始终建议解决此问题时,将使用具有所需 id 的查询的集合终结点作为查询参数。这样,您将始终获得所需的条目及其所有链接数据。你的代码应该看起来像这样
client.getEntries({'sys.id': '6Inruq2U0M2kOYsSAu8Ywk'})
.then(response => console.log(response.items[0].fields.image.fields.file.url))
我希望这有所帮助。最好Khaled
使用 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;
};
获取图像 url 的另一种方法是使用 getAsset('<asset_id>')
。因此,首先,使用 getEntry()
方法,您需要获取条目数据,然后从字段中提取 id:fields.image.sys.id,并将其传递给 getAsset
方法。